5
對於這兩個術語有點困惑,我在想什麼是持久性消息,而是暫時性(非持久性)隊列的目的是什麼?畢竟,如果代理重新啓動且隊列未恢復,恢復的消息將被浪費。持久性和持久性概念AMQP中的混淆
對於這兩個術語有點困惑,我在想什麼是持久性消息,而是暫時性(非持久性)隊列的目的是什麼?畢竟,如果代理重新啓動且隊列未恢復,恢復的消息將被浪費。持久性和持久性概念AMQP中的混淆
您可以擁有持久隊列,但是「真人版」的消息,因此在代理重新啓動後,您仍然可以擁有隊列,但它將是空的,反之亦然,但是當您悲傷時,是的,您將丟失隊列中的所有消息。
在您提供的消息持久性選項的組合中,它確實沒用,但不會導致錯誤。
但如果你綁定alternate exchange交流要發佈消息,這是耐用,重啓後,你可以將消息路由到它,如果你不具備瞬時隊列聲明。
實施例:
假設我們有這樣的組合和正確綁定隊列,Q*1
接收消息M*1
和Q*2
- M*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]
我們發佈兩條消息再次,[Mt1/transient]
和`[Md1 /耐用]:
[ 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]
所以,當在相反情況下,我們有「致命的」隊列和持久性消息,重新啓動後,我們將結束與不用排隊,但之前分配給沒有更多消息現有的隊列,這是否意味着我們有懸掛的消息? – ahj
消息將丟失。我用例子更新了我的答案,希望這會有所幫助。 – pinepain
@pinepain:定義「消息將會丟失。」這是否意味着郵件已從磁盤上刪除,或者它們仍然在磁盤上,但因爲RabbitMQ不知道它們在哪裏而被孤立了? – Ellesedil