春AMQPでSimpleMessageListenerContainerとDirectMessageListenerContainerの違いは何ですか?

マンスールQulam:

違いは何だSimpleMessageListenerContainerDirectMessageListenerContainer春AMQPでは?私は彼らのドキュメントページの両方を確認し、SimpleMessageListenerContainer内部の仕組みについてはほとんど何の説明がなく、DirectMessageListenerContainer以下の説明があります。

SimpleMessageListenerContainerは それほど単純ではありません。RabbitMQ Javaクライアントへの最近の変更は、ウサギ、クライアントの消費者のスレッド上で直接リスナーを起動しますはるかに簡単なリスナーコンテナを容易にしました。何txSizeプロパティはありません-各メッセージは、個別にACKさ(またはNACKされ)ています。

私は実際に何を意味するか、これらを理解していません。それは言いますlistener container that invokes the listener directly on the rabbit client consumer threadもしそうなら、どのようにSimpleMessageListenerContainer呼び出しを行いますか?

私は小さなアプリケーションを書いて使用DirectMessageListenerContainerし、ちょうど違いを見るために、私はに切り替えたSimpleMessageListenerContainerが、私の知る限りのRabbitMQ側に差はなかったです。Java側との違いは、メソッド(にあったSimpleMessageListenerContainer多くを提供)およびログ(DirectMessageListenerContainerより多くのものをログに記録しました)

私はそれらの一つ一つを使用するシナリオを知っていただきたいと思います。

ゲイリー・ラッセル:

SMLCは、各消費者(並行処理)をポーリング内部キューの専用スレッドを有します。新しいメッセージがクライアントスレッド上で、消費者のために到着すると、それは内部キューに入れられ、消費者のスレッドがそれを拾ってリスナーを起動します。これは、マルチスレッドを提供するために、クライアントの初期のバージョンで必要でした。私たちは直接リスナーを呼び出すことができますので問題ありません新しいクライアント(名前)を持ちます。

脇から他のいくつかの違いがありますtxSize

参照コンテナを選択します

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=225215&siteId=1