2017-11-21 9 views
0

データ "A"のストリームにアクセスし、テーブル "B"に対していくつかの条件をチェックし、最後にテーブル "B"の状態を更新したいと思います。Kstreams内のテーブルの更新とアクセス

(A,B) ====> check conditions in B ====> finally update B 

どのように私はカフカストリームで同じロジックを実装することができますか?ドキュメンテーションから私の観察は、データ "A"をストリーミングするためにKstreamsを使用することができ、テーブル "B"を更新するためにKtableを使用することができるということです。しかし、kstreamsとktableの間で許可される操作だけが結合であり、ktableを更新しません(代わりに、それをルックアップとしてのみ使用します)。また、別の新しいkstreamを作成します(私は望みません)。一言で言えば、Ktableへのアクセスは、着信ストリームを参照してテーブルを更新したいので、どのようにカフカストリームで同じように実装できますか?

答えて

1

KTableの内容はStreams APIによって維持され、 はKTableを直接更新できません。

トピックからKTableを読んだとします。このためには、トピックに書き込むことによってテーブルを更新し、Kafka Streamsはトピックから読み込んでテーブルを更新します。トピックから読み込まれるKTableは、トピックの内容を含むように設計されています。

もちろん、トピックに書き込むとKTableはすぐには更新されませんが、遅れて更新されます(これは非同期アップデートです)。同期更新が必要な場合は、KTableは使用できませんが、添付の状態の.transform()を使用できます。

+0

ルックアップテーブルの更新方法は何ですか? 'KTable'やカスタマイズされた' State Stores'を使うことで? – rishi007bansod

+0

IMHO、好ましい方法はありません。ユースケースと要件によって異なります。最適なものを選んでください。答えにはトレードオフが説明されています。自分で決定する必要があります。 –

関連する問題