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]
- 1. Durata connessione e durata connessione
- 2. in RabbitMQ/AMQP
- 3. Microservizio, amqp e registro di servizio/rilevamento
- 4. Comprensione dei concetti di superficie e tela
- 5. Informazioni sulle variabili di ambiente R e sui concetti correlati
- 6. concetti pthread in linux
- 7. Concetti di Angular 2 e MySQL
- 8. Concetti DTO e DAO e MVC
- 9. Persistenza rapida e immediata
- 10. Haskell simultaneità e persistenza
- 11. confusione di Lambda e numeri di chiesa confusione
- 12. Finite State Machine e persistenza in Laravel
- 13. Elenco di concetti OOP disponibili
- 14. Hibernate/Persistenza e Pattern singleton
- 15. Concetti di scorrimento loop infinito
- 16. HashMap in gestore di persistenza
- 17. Connessione e Persistenza a HBase
- 18. AMQP - Il consumatore ha accesso alla chiave di routing?
- 19. Divisione MusicXML e durata
- 20. MVC: i modelli e gli oggetti entità sono concetti separati?
- 21. Embedded Java Broker AMQP
- 22. Installazione AMQP attraverso PECL
- 23. ENTRA/Dove CONCETTI
- 24. Persistenza sessione Firebase 3.0
- 25. Concetti IDE sperimentali
- 26. void_t "può implementare concetti"?
- 27. Concetti: Canale vs Stream
- 28. Librerie AMQP + Android
- 29. Confusione tra isNaN e Number.isNaN in javascript
- 30. Confusione forte e debole in iOS
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