Essendo un po 'confusi su questi due termini, sto pensando a che cosa è lo scopo di avere un messaggio persistente ma una coda transitoria (non duratura)? Dopo tutto, se il broker si riavvia e le code non vengono ripristinate, i messaggi recuperati verranno sprecati.Concetti di persistenza e durata Confusione in AMQP
risposta
È possibile avere una coda duratura ma messaggi "mortali", quindi dopo il riavvio del broker è ancora possibile fare la coda ma sarà vuota e viceversa, ma se si è tristi, sì, si perderanno tutti i messaggi nella coda.
Nella combinazione che hai fornito l'opzione di persistenza dei messaggi è davvero inutile ma non causerà errori.
Ma se si esegue lo scambio di alternate exchange, si stanno pubblicando messaggi ed è durevole, dopo il riavvio, è possibile instradare i messaggi su di esso se non è stata dichiarata la coda transitoria.
Esempio:
Supponiamo di avere tale combinazione e le code correttamente legati, Q*1
ricevere messaggi M*1
e Q*2
- M*2
.
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qm1/transient][Qm2/transient] [Qax1/durable][Qax2/durable]
Diamo pubblicare messaggi [Mt1/transient]
e `[MD1/durevole], otterremo tale situazione:
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qm1/transient][Qm2/transient] [Qax1/durable][Qax2/durable]
[Mt1/transient]
[Md1/durable]
Dopo il riavvio avremo
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qax1/durable][Qax2/durable]
Diamo pubblicare due messaggi ancora, [Mt1/transient]
e `[Md1/durevole]:
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qax1/durable][Qax2/durable]
[Mt1/transient]
[Md1/durable]
Quindi, riavviare mediatore di nuovo:
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qax1/durable][Qax2/durable]
[Md1/durable]
Così, quando nel nel vizio scenario versa abbiamo code "mortali" e messaggi permanenti, dopo il riavvio ci ritroveremo senza code, ma i messaggi che sono stati assegnati in precedenza al più code esistenti, vuol dire che abbiamo messaggi penzolanti? – ahj
I messaggi andranno persi. Ho aggiornato la mia risposta con l'esempio, spero, sarà di aiuto. – pinepain
@pinepain: definire "i messaggi andranno persi." Significa che i messaggi sono stati cancellati dal disco o che sono ancora sul disco ma sono rimasti orfani perché RabbitMQ non sa più dove si trovano? – Ellesedil