私はメッセージキューの世界で新しく、現在RabbitMQ、ActiveMQ、およびKafkaを評価中です。 RabbitMQでは、プロデューサがRabbitMQサーバーへの接続を作成し、接続を保持しているスレッドは接続が閉じられるまでアクティブであることがわかります。これは、MUSTがRMQ Producerスレッドに情報を配信する別のスレッドであると信じています。このスレッドは、単にメッセージをキューに公開し、RMQサーバーへの接続が閉じられるまでループし続けますか?この仮定は正しいですか?どんな思考/インプットも高く評価されます。RabbitMQでは、接続とチャネルを別のスレッドで管理する必要がありますか?
ありがとうございます!
P.S:これはKafkaの動作ではありません。 [Apache Kafka: Java Producer reusability]
出版社単に関連の接続/チャンネルを開き、すなわちRabbitMQのブローカーをキューにメッセージを投稿することができますし、接続/チャネルを安全に閉じて終了することができます。メッセージは消費されるまでブローカーに残っています。これを実現するにはパブリッシャーは* persistent *メッセージを投稿し、キューは*耐久性*にする必要があります。 – sameerkn
ありがとう@sameerkn。基本的には、Producer/Publisherはできるだけ早くメッセージを書いて終了するべきです。数秒後、次のメッセージが表示されます。今度はConnectionをもう一度セットアップするオーバーヘッドが必要ですか?私は公開したいすべてのメッセージに対してConnectionを繰り返し作成するというオーバーヘッドを避けたいと思います。 – z00lander
次に、RabbitMQブローカへのメッセージの受け入れとポストを続ける別のスレッドが必要になります。このスレッドは、メッセージ/メッセージが投稿されたばかりのPublisher/Application/MainThreadが存在するまで接続/チャンネルを開いたままにする必要があります。 – sameerkn