違いは何だSimpleMessageListenerContainer
とDirectMessageListenerContainer
春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
。
参照コンテナを選択します。