2013-07-18 31 views
5

これらの2つの用語について少し混乱していますが、永続的なメッセージを持つ目的は何ですか、一時的(耐久性のない)キューですか? 結局のところ、ブローカが再起動し、キューが復元されない場合、回復されたメッセージは無駄になります。永続性と耐久性の概念AMQPの混乱

答えて

4

ブローカーの再起動後でもキューは残っていても空でもその逆もありますが、悲しいことに、キュー内のすべてのメッセージが失われます。

メッセージの永続性オプションを指定すると、実際には役に立たなくなりますが、エラーは発生しません。

alternate exchangeを交換するためにバインドするとメッセージを公開していて、耐久性があります。再起動後、過渡キューが宣言されていないとメッセージをルーティングできます。

例: - M*2

Q*1がメッセージM*1Q*2を受け、私たちは、このような組み合わせを持っているし、適切にバインドされたキューとします。

[ Exchange-main/durable ] + [Exchange-alternate/durable] 
[Qm1/transient][Qm2/transient] [Qax1/durable][Qax2/durable] 

のメッセージ[Mt1/transient]と `[Md1の/耐久性のある]を公開し、我々はこのような状況を取得しますしてみましょう:

[ Exchange-main/durable ] + [Exchange-alternate/durable] 
[Qm1/transient][Qm2/transient] [Qax1/durable][Qax2/durable] 
[Mt1/transient] 
[Md1/durable] 

再起動した後、私たちは

[ Exchange-main/durable ] + [Exchange-alternate/durable] 
           [Qax1/durable][Qax2/durable] 

はのは、2つのメッセージを公開してみましょう取得します再び、[Mt1/transient]と `[Md1/durable]:

[ Exchange-main/durable ] + [Exchange-alternate/durable] 
           [Qax1/durable][Qax2/durable] 
           [Mt1/transient] 
           [Md1/durable] 

ので、もう一度再起動ブローカー:その逆のシナリオではでそう

[ Exchange-main/durable ] + [Exchange-alternate/durable] 
           [Qax1/durable][Qax2/durable] 
           [Md1/durable] 
+0

は、我々はこれ以上に以前に割り当てられませんでしたなしのキューが、メッセージになってしまいます再起動後、「現世」のキューと永続メッセージを持っています既存のキューは、メッセージが絡んでいることを意味しますか? – ahj

+0

メッセージは失われます。私は例を使って私の答えを更新しました、それが助けになるでしょう。 – pinepain

+0

@pinepain:「メッセージが失われる」と定義します。これは、メッセージがディスクから削除されたこと、またはディスク上にまだ残っているが、RabbitMQがどこにいるか分からないために孤立していることを意味しますか? – Ellesedil

関連する問題