カフカにメッセージをプッシュするJavaベースのWebアプリケーション用のカフカプロデューサがあります。ドキュメントごとに私はkafkaプロデューサがスレッドセーフであることがわかりました。私はカフカのプロデューサーのインスタンスを1つ持ち、別のスレッド(ウェブリクエスト)で使用することができますが、それぞれが私のケースではプロデューサーを開いたり閉じることができますか?これによって問題が生じるのでしょうか?または、要求ごとにプロデューサを開始する方が良いですか?カフカプロデューサを別のスレッドで使用する
2
A
答えて
4
はい、KafkaProducerはスレッドセーフです。
はClass KafkaProducer
カフカのクラスターにレコードを発行しカフカクライアントを参照してください。
プロデューサはスレッドセーフであり、一般にすべての スレッドで共有する必要があります。
プロデューサは、 も、 と通信する必要がある各ブローカへのTCP接続として、I/Oを行う単一のバックグラウンドスレッドを管理します。使用後にプロデューサを閉じないと、 リソースがリークします。
0
これは、アプリケーションの開始時に単一のインスタンスをインスタンス化し、すべてのスレッドで共有することです(これは、ステートフルなクライアントコネクタ(SQLクライアント、elasticsearchクライアントなど)の典型です)。アプリケーションのシャットダウン時にのみ閉じる必要があります。
関連する問題
- 1. 別のスレッドでのGenericListの使用
- 2. iphoneの別のスレッドでOpenGL ESを使用するには?
- 3. Monitor.EnterとMonitor.Exitを別のスレッドで使用する
- 4. 別のスレッドでNSArrayControllerからNSManagedObjectsを使用する
- 5. UIスレッドとは別のスレッドでビューを使用しています。
- 6. Java:スレッドを別のスレッドに渡すスレッド
- 7. 別のスレッドで1つのスレッドでデータを作成する
- 8. 別のスレッドで同じポートを使用するC#複数のソケット
- 9. ロギングハンドラは個別のスレッドを使用しますか?
- 10. プロセスは別のスレッドを使用し始めますか?
- 11. 別のスレッドで接続をリッスンする
- 12. Cで別のスレッドを停止するスレッド
- 13. 別のアクティビティでアクセスする別個のダウンローダクラス(別スレッド)
- 14. 別のスレッドを使用してデータベースからコンボボックスにデータをロード
- 15. detachNewThreadSelectorを使用して別のスレッドにテクスチャを読み込む
- 16. Parallel.Foreachをスレッド内で使用する
- 17. Perlスレッドで定数を使用する
- 18. スレッドをJavaで使用する
- 19. QtConcurrentを使用して別のスレッド上のシグナル/スロットを接続する::実行
- 20. GCDを使用して別のスレッドで取得された値を返す
- 21. あるスレッドから別のスレッドにコレクションオブジェクトをJavaスレッドで安全に渡す
- 22. 別のスレッドで計算する
- 23. System.Timers.Timerを使用して別のスレッドのコントロールにアクセス/変更する方法?
- 24. スレッドをロックして別のスレッドにロック
- 25. 別のスレッドのイベントを起動する
- 26. startActivtyは別のスレッドで
- 27. あるスレッドから別のスレッドに転送できるロック
- 28. SQL DBクエリ用に別のスレッド
- 29. UIとロジック用に別々のスレッド - Android
- 30. FileChannelを使用して別のスレッドからファイルを個別に検索できますか?
以下のシナリオを処理すると、私は疲れました.. 1つのスレッドがプロデューサを開き、別のスレッドがデータを送信する前に閉じます。最初のスレッドで送信を実行すると例外はありますか? –
絶対に例外がスローされます。通常、スプリングコンテキストのようなマイクロコンテナを使用し、スプリングコンテキストを破棄する場合にのみカフカ消費者を閉じます。 –