私は趣味のプロジェクトとして Kafka 9 を調査しており、「Hello World」タイプの例をいくつか完成させました。
一般的に要求応答メッセージングに基づいて実世界の Kafka アプリケーションについて考えなければなりません。より具体的には、Kafka 要求メッセージをその応答メッセージにリンクする方法を考えなければなりません。
生成された UUID を要求メッセージ キーとして使用し、この要求 UUID を関連する応答メッセージ キーとして使用する方法を考えていました。WebSphere MQ がメッセージ相関 ID を持っているのとほぼ同じタイプのメカニズムです。
私の最後の2つの終了プロセスは次のようになります。
1)。Kafka クライアントはランダムな UUID を生成し、単一の Kafka 要求メッセージを送信します。2)。サーバーは、この要求メッセージの抽出を消費し、要求の UUID 値を保存します 3)。メッセージ ペイロードを使用してビジネス プロセスを完了します。4)。要求メッセージから格納された UUID 値を応答メッセージ キーとして使用する応答メッセージで応答します。5)。Kafka クライアントは、タイムアウトするか、元の要求 UUID 値を持つメッセージを取得するまで、応答トピックをポーリングします。
私が懸念しているのは、Kafka コンシューマーのポーリングが他のクライアントのメッセージを応答トピックから削除し、オフセットを増やして他のクライアントを失敗させることです。
設計されていないユースケースで Kafka を適用しようとしていますか?
Kafka で要求/応答メッセージングを実装することは可能ですか?