Domanda

Ho una domanda che ho cant sembrano trovare una risposta su. Questa è la mia prima volta con RabbitMQ in un'applicazione "grande" e mi chiedo come i code di lavoro in un cluster. Capisco che le informazioni di routing (code, scambi, attacchi) è su tutti i nodi del cluster, ma la coda risiede l'auto sulla macchina che è stato creato su. Sto creando un paio di code persistenti durevoli. Se scrivo messaggi permanenti a una coda sul MachineA nel cluster, vengono scritti su disco, poi scrivo messaggi a ComputerB, stessa coda, essi saranno "reindirizzati" per MachineA o si ottengono scritti sui dischi di ComputerB?

La mia preoccupazione è sarò gestire migliaia di messaggi al secondo e vogliono Non avere la velocità dei dischi essere un collo di bottiglia. Se lo fa, infatti, reindirizzare i messaggi in qualche modo internamente, che dovrà attuare un certo tipo di sharding che aspira :(

Fammi sapere ragazzi:)

È stato utile?

Soluzione

Come dici tu, all'interno di un cluster RabbitMQ, una coda risiede solo sul nodo è stato dichiarato su.

Quando si pubblica a quella coda su un altro nodo, il messaggio viene instradato alla macchina corretta, dove alla fine viene scritto su disco.

La parola chiave qui è eventualmente . Qualsiasi messaggio (se pubblicato persistente o transitoria, in una coda durevole e non durevole) può ottenere persistito su disco. Un messaggio persistente pubblicato a una coda lunga durata è solo un forte indizio al broker che il messaggio dovrebbe ottenere scritti su disco prima possibile. Detto questo, non c'è alcuna garanzia che il messaggio sarà scritto, in modo che il disco non sarà normalmente diventare un collo di bottiglia (l'eccezione che è se si sta esaurendo la memoria).

Se volete la consegna garantita, che è una questione diversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top