17

メッセージを Kafka にプッシュする Java ベースの Web アプリケーション用の kafka プロデューサーがあります。ドキュメントによると、kafka プロデューサーはスレッドセーフであることがわかりました。Kafkaプロデューサーの単一のインスタンスを持ち、それを異なるスレッド(Webリクエスト)で使用できるということですか?私の場合、それぞれがプロデューサーを開いたり閉じたりします。これにより問題が発生しますか? または、リクエストごとにプロデューサーを開始する方が良いですか?

4

2 に答える 2

20

はい、KafkaProducer はスレッドセーフです。クラス KafkaProducer
を参照してください

レコードを Kafka クラスターに発行する Kafka クライアント。

プロデューサはスレッド セーフであり、通常は最高のパフォーマンスを得るためにすべてのスレッド間で共有する必要があります。

プロデューサーは、I/O を実行する単一のバックグラウンド スレッドと、通信する必要がある各ブローカーへの TCP 接続を管理します。使用後にプロデューサを閉じないと、これらのリソースがリークします。

于 2016-03-24T05:27:39.820 に答える
3

断然最良のアプローチ (SQL クライアント、elasticsearch クライアントなどのほとんどのステートフル クライアント コネクタで一般的) は、アプリケーションの開始時に単一のインスタンスをインスタンス化し、それをすべてのスレッドで共有することです。アプリケーションのシャットダウン時にのみ閉じる必要があります。

于 2016-03-24T03:33:55.087 に答える