2013-07-18 19 views
5

Będąc nieco zdezorientowanym tymi dwoma terminami, zastanawiam się, jaki jest cel posiadania trwałej wiadomości, ale przejściowej (nietrwałej) kolejki? W końcu, jeśli broker zostanie zrestartowany, a kolejki nie zostaną przywrócone, odzyskane wiadomości zostaną zmarnowane.Pojęcie trwałości i trwałości Zamieszanie w AMQP

Odpowiedz

4

Możesz mieć trwałą kolejkę, ale wiadomości "śmiertelne", więc po ponownym uruchomieniu brokera nadal możesz mieć kolejkę, ale będzie pusta i odwrotnie, ale jeśli będziesz smutny, tak, stracisz wszystkie wiadomości w kolejce.

W wybranej kombinacji opcja trwałości komunikatu jest naprawdę bezużyteczna, ale nie spowoduje błędu.

Ale jeśli wiążisz alternate exchange w celu wymiany, do której publikujesz komunikaty i jest on trwały, po ponownym uruchomieniu możesz przekierować do niego wiadomości, jeśli nie masz zadeklarowanej kolejki przejściowej.

przykład:

Załóżmy, że mamy taką kombinację i odpowiednio związane kolejki Q*1 komunikaty M*1 i Q*2 - M*2.

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

Niech publikować wiadomości [Mt1/transient] i `[MD1/trwałe], będziemy mieli taką sytuację:

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

Po restarcie Dostaniemy

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

Niech publikują dwie wiadomości ponownie, [Mt1/transient] i "[Md1/durable]:

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

więc restart broker ponownie:

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

Kiedy więc w w scenariuszu vice versa mamy „śmiertelne” kolejki i uporczywe wiadomości, po restarcie skończymy bez kolejek, ale wiadomości, które zostały przypisane wcześniej do nie więcej istniejących kolejek, czy to oznacza, że ​​mamy zwisające wiadomości? – ahj

+0

Wiadomości zostaną utracone. Zaktualizowałem swoją odpowiedź przykładem, mam nadzieję, że to pomoże. – pinepain

+0

@pinepain: Zdefiniuj "wiadomości zostaną utracone." Czy to znaczy, że wiadomości zostały usunięte z dysku, lub że nadal są na dysku, ale zostały osierocone, ponieważ RabbitMQ nie wie już, gdzie są? – Ellesedil

Powiązane problemy