1

切断されたキューにあるダイレクト モードの交換から転送された永続メッセージを RabbitMQ がどのように処理するかについて、私は少し混乱しています。

状況はこうです。

       -> Exclusive Queue -> Client 1
      /
Exch - 
      \
       -> Exclusive Queue -> Client 2

永続的なメッセージは、それらを専用キューに配布する交換に送信されます。クライアント 1 は、専用キューを破棄して終了します。

私の質問は、そのキューにメッセージがある場合、それらは失われますか? それとも、彼らは交換に憤慨していますか?

それともこれは悪い考えですか?各クライアントを単一のキューに接続する方がよいでしょうか? (これには永続的なメッセージと高いスループットが必要なので、それがオプションかどうかはわかりません...)

4

1 に答える 1

1

永続的なメッセージは、キュー内でのみ永続的です。実際、耐久性のあるキューでのみ。つまり、RabbitMQ自体が何らかの理由でダウンした場合です。永続キューに未消費の永続メッセージがある場合、RabbitMQが再起動されると、それらはキューとともに復元されます。

したがって、これは問題の解決にはなりません。あなたがしたいことは、自動削除設定がfalseに設定されていることを確認することです。これを機能させるために永続的なメッセージを用意する必要はありません。Autodeleteは、接続されているコンシューマーがなくなるとキューを削除します。クライアントが正常に停止し、接続が適切に削除された場合、trueに設定されていれば(これがデフォルトであると私は信じています)、キューも自動削除されます。

autodeleteをfalseに設定すると、キューは常に存在し、宣言された後は常にメッセージを受信します。したがって、クライアントが停止してもキューにメッセージが残っている場合は、クライアントを再起動したときにメッセージがキューに残ります。

于 2013-01-12T13:01:02.893 に答える