0

カフカ(0.11.0.0)の最後のバージョンから2017年6月28日にリリースされた、のをサポートするためにカフカチームが新機能を提供しました。 最新バージョンをダウンロードした後、Producer configsに記載されているように、プロデューサ(kafka-console-producer.shスクリプトで実行)を設定しようとしました:enable.idempotence=truetransactional.id=0A0Aと設定しました。カフカ - "一度だけの配達"の意味で

問題は、私がプロデューサーを起動したとき、私はConfigExceptionacksは(私はコンソールスクリプトに引数として渡すproducer.propertiesファイルでそれを設定しても)allまたは-1に設定されなければならないことを言ってもらうことです。

コンソールスクリプトを使用して冪等が設定できない根本原因になりますか?さらに、提供されたコンソールスクリプトを通じてメッセージを生成するアトミックトランザクションを行う方法はありますか?

詳細:書き込むことができる

  • 冪等プロデューサー:sythesisで

    は、採用されたソリューションは、2つの主要な概念に基づいています特定の私プロダクション側でトランザクションIDを導入することにより、1回だけssageが設定されます 保証アトミック性複数の場合は単一のトピックのパーティションになります。

  • コンシューマ側では、isolation.level=read_committedプロパティを通じて、トランザクションがコミットされた後にのみメッセージを読み取ることができるようになりました。
+0

コンソールプロデューサのデフォルトはacks = 1です。これを正しく「すべて」または-1に変更してください。 –

答えて

2

コンソールプロデューサは、独自のデフォルトを設定します。 --request-required-acks "all"または--request-required-acks -1を追加して、デフォルトの1の代わりにすべてにacksを設定してみてください。

+0

ありがとう!もう例外はありません。問題は今です:同じキーと値のペアを複数回生成すると、ログに複数回も表示されます。私はそのペアを一度だけ見ることを期待していた。これを達成し、コンソールスクリプトでテストすることは可能ですか? "enable.idempotency' _" 'true'に設定すると、プロデューサは各メッセージのコピーがストリームに正確に1つ書き込まれることを保証します。_ – rh0x

+4

同じコンテンツを2回パブリッシュする場合、 EOSが適用されないように一意のメッセージIDを持つメッセージ同様のメッセージを複数回公開できるようにするアプリケーションがたくさんあります。 EOSは、失敗や再試行によって異常に作成された同じメッセージ*の複数のコピー*のみを重複排除します。 –