2017-04-09 23 views
0

私は、同期に起こるはずのクライアントへのAPI呼び出しに応答するためのユースケースを持っています。しかし、API実行中に、システムAは、カフカメッセージを別のシステムBに発行する必要があり、システムBはシステムAに応答を返し、消費し、API応答としてクライアントに応答する必要があります。同じ実行で同期API呼び出し(REST/Spring)と非同期メッセージ(Kafka)を処理する

ここでは、この問題にはAsync pub-subモデルとSync API処理があります。私はプロデューサとコンシューマのpub-subを2つの異なる@Asyncメソッドとして扱うことができますが、両方の同期を同期させる際に問題を見つけることができます。

APIによって生成されたメインスレッドは、コンシューマが応答するのを待つことができますが、スレッドをブロックします。

これを実現するための提案は非常に高く評価されています。ここ

あなたはEIPブックで説明非同期要求応答パターンを使用する必要がありますどのようなプログラミング言語の同期および非同期部分は一般的ではなく、中に書かれていると言っていなかったおかげで

答えて

0

http://www.enterpriseintegrationpatterns.com/patterns/conversation/RequestResponse.html

同期API(HTTP経由のREST API呼び出しなど)を処理しているアプリケーションは、リクエストメッセージに独自のCorrelationID(アプリで生成したもの)を含めて、その後に非同期アプリ要求トピックからのこれらの要求を処理し、CorrelationIDをキーとして使用してレスポンストピックに返信したり、レスポに含めることができますnseメッセージ(元のリクエスタがどのレスポンスをどのリクエストに関連付けるかを知るため)。

+0

ハンス、返信いただきありがとうございます。プログラミングはJavaで、私は私の質問にそれをタグ付けしました。 同じSyncコールでリクエストとレスポンスを関連付けることがここでの課題です。スレッドをブロックすることはできますが、スケーラブルなオプションではありません。 – Rams

+0

スレッドをブロックしないでください。あなたは応答のためにカフカを投票する必要があります。 –

+0

私は、カフカからの応答を得た後、元のリクエストスレッドをブロックすることなく、同じコンテキストでリクエストとレスポンスを関連付けることが課題であることを意味します。 – Rams

関連する問題