2016-02-21 15 views
9

私はKafka 9を趣味のプロジェクトとして調査し、いくつかの「Hello World」タイプの例を完成させました。Kafkaのサポートは、応答メッセージを要求しますか?

私は、一般的なリクエストレスポンスメッセージ、具体的にはカフカリクエストメッセージをレスポンスメッセージにリンクする方法に基づいて、Real World Kafkaアプリケーションについて考えなければなりません。

私は、生成されたUUIDをリクエストメッセージキーとして使用し、このリクエストUUIDを関連するレスポンスメッセージキーとして使用するという考えに沿って考えていました。 WebSphere MQにメッセージ相関IDがあるのとほとんど同じタイプのメカニズムです。

私の2番目のエンドプロセスは終了です。

1)。 KafkaクライアントはランダムなUUIDを生成し、単一のKafka要求メッセージを送信します。 2)。サーバーはこの要求メッセージを消費します。&要求UUID値を格納します。 3)。メッセージペイロードを使用してビジネスプロセスを完了します。 4)。要求メッセージからの格納されたUUID値を応答メッセージ鍵として使用する応答メッセージで応答します。 5)。 Kafkaクライアントは、タイムアウトまたは元の要求UUID値を持つメッセージを取得するまで、応答トピックをポーリングします。

私が心配しているのは、Kafka Consumerのポーリングが応答トピックから他のクライアントメッセージを削除し、オフセットを増やして他のクライアントを失敗させることです。

カフカを使用するケースに適用しようとしていますが、それは決して設計されていませんでしたか?

カフカでリクエスト/レスポンスメッセージを実装することは可能ですか?

答えて

6

カフカは特定のコンシューマグループに対してコミットされたオフセットを保持する便利な方法を提供していますが、その動作を使用する必要はなく、必要があると感じる場合は独自に書き込むことができます。それでも、あなたがそれを記述したやり方でKafkaを使用すると、各クライアントは特定のレスポンスのトピックを繰り返し検索する必要があるため、ユースケースにとっては少し厄介です。それは最高で非効率的です。

この問題を2つの部分に分割し、引き続きKafkaを使用してサーバーへの要求とサーバーからの応答を配信できます。あなたが追加する必要があるのは、あなたのクライアントが話し、カフカ特有のロジックをクライアントからカプセル化する何らかのAPIレイヤーだけです。この層には、uuidによる応答を格納できるローカルDB(リレーショナルまたはNoSQL)が必要です。特定のuuidに対して応答が利用可能かどうかをAPIが非常に迅速かつ簡単に答えることができます。

+0

私の問題を見て時間をかけてクリスありがとう。ローカルDBにレスポンスを格納するのは良い考えです。 – Hector

0

は、私はそれを試したことがないが、あなたはどんな農産物を開始する前に、答えのトピックからパーティションの数に0から番号をキーいくつかのメッセージを生成し、あなたの生産者は、すでにそのトピックの消費者であれば、理論的には、その全てのプロデューサーが受け取ることになりますそれらのメッセージの少なくとも1つ。その鍵を各プロデューサに保存し、uuidで公開することができます。消費者のプロセスの後、uuidの回答を公開し、それと一緒に送信された同じ鍵を使用することができます。それはそれを送った同じ生産者によって得られるでしょう...同じキーを持つすべてのメッセージが同じパーティションに公開されたら...

+0

もちろん、プロデューサーでは、uuidをキーとしたハッシュと、そのリクエストに価値あるものとして答えるためのものがあります。 – SmokeMachine

+0

それは意味がありますか? – SmokeMachine

+0

あなたの答えは書き換えが必要ですが、最初の文章はほとんど意味がありません: - / –

1

Easier! zookeeperに書き込むことができるのは、UUID XがパーティションYで応答される必要があり、そのUUIDを送信したプロデューサがパーティションYを消費するようにすることだけです...それは意味がありますか?

0

私は、リクエストを呼び出すサービスのシャードキーが必要だと思います。あなたのリクエストには、このシャードキーとトピックを投稿する場所が含まれている必要があります。また、状態マシンのいくつかの並べ替えを作成する必要がありますあなたのタスクに関するメッセージが表示される場合は、いくつかの状態に移行する...これは、厳密な非同期設計のためになります

関連する問題