2017-03-08 17 views
0

confirm.selectメソッドを送信したパブリッシャの場合、RabbitMQブローカdocumentationを読むと、メッセージの確認応答が、元のメッセージが発行された順序とは異なる順序でクライアントによって受信される可能性があることが示唆されます。RabbitMQは公開されたメッセージの確認がクライアントに返送される順序を保証しますか?

これが本当にケースであることを誰でも確認できますか?または、メッセージは常に受信されたのと同じ順序で確認されますか?メッセージの確認を異なる順序で受け取ることができる場合、これにはどのような条件が必要ですか?

+0

私は確認がメッセージアックかナックかどうかに関心がありませんが、これらのメッセージが受信される順序にのみ関心があることに注意してください。 –

答えて

0

これが本当にケースであることを誰でも確認できますか?

はい、メッセージは、このようにするために必要とされるどのような条件は異なる順序

で確認することができましたか?次のように確認するための基本的なルールがある


  • を非ルーティング可能な必須または即時メッセージが右basic.return後に確認されました。
  • 一時的なメッセージは、キューに入れられた瞬間に確認されます。
  • 永続メッセージがディスクに保存されているときに確認されます。または、すべてのキューで消費されるときに が使用されます。

ので、考えられる理由は次のようになります。

  1. 永続メッセージがまだディスクに永続化が、消費者に転送されていない場合を考えてみましょう。メッセージは非同期で処理されるので、異なるメッセージが異なる順序で消費者によって確認される可能性があり、したがって確認の順序はそれに応じて変化する。
  2. TCPの問題。パブリッシャによって発行されたパケットは、同じ順序でブローカサーバに到達するとは限りません。したがって、出版社は出版社と同じ順序で受け取ることはできません。
関連する問題