Open1

grpcで入れ子通信をしてしまった話

kitchykitchy

はじめに

とある案件でgrpcを使うことになった。grpc初心者の僕はドキュメントを読みながらやっていたが、変なところで詰まったためメモをする。

つまったこと

以下のようなことを実装してしまっていた。設計時とコーディング時に全く気づいていなくて、全く大丈夫だろうとおもっていた。

しかし、今見返してみたらなんて冗長な通信方法なんだ!

この状態では、2つ目のstreamで処理したデータを送信(request)で固まってしまうことが確認された。
全くエラーも儚いので、最初はなんでこれで止まるのかがわからなかった....(ほぼ一日を無駄にしました。)

原因

これでなぜ止まるのかというと、おそらく2つのシステム間の通信は、一つしかできない?(もしかしたらスレッド処理的なもので実装できるかも)
なので、あまり上記のような通信はしてはいけない気がする。

解決方法

そこで、簡単にいかの方法で通信するようにした。

スッキリしたし、全く問題なく動作するようになった。