Domanda

Al momento sto valutando sistemi di coda di messaggi e RabbitMQ sembra un buon candidato, quindi sto a scavare un po 'più in esso.

Per dare un po 'di contesto Sto cercando di avere qualcosa di simile carico di uno scambio di bilanciamento il messaggio pubblicazione in più code. Non voglio replicare i messaggi, in modo da uno scambio di fan-out non è un'opzione.

Anche la ragione per cui sto pensando di avere più code vs una coda gestire il round-robin w / consumatori, è che io non voglio il nostro punto singolo di guasto di essere al livello di coda.

suona come io potrebbe aggiungere un po 'di logica sul lato publisher di simulare che il comportamento modificando la chiave di routing e con le associazioni appropriate sul posto. Ma questo è il tipo di un approccio passivo, che non avrebbe preso il ritmo del consumo di messaggio in ciascuna coda in considerazione, che potrebbe condurre a riempire una coda se le applicazioni consumer per quella coda sono morti.

Ero alla ricerca di un modo più pro-attivo da parte dell'ente di scambio, che avrebbe deciso dove inviare il messaggio successivo sulla base di ogni dimensione della coda o qualcosa del genere.

Ho letto di Alice e le API RESTful disponibili ma che sembra sorta di una soluzione robusta per attuare le decisioni veloce di routing.

Qualcuno sa se round-robin tra lo scambio delle code è fattibile w / RabbitMQ allora? Grazie.

È stato utile?

Soluzione

Gli scambi sono generalmente apolidi nel modello AMQP, anche se ci sono stati alcuni esperimenti recenti in scambi stateful ora che c'è sia un sistema per la gestione dei plugin RabbitMQ e per la fornitura di nuovi tipi di scambio sperimentale.

Non c'è niente che fa tutto quello che vuoi, non credo, anche se non sono del tutto sicuro di aver capito il requisito. A parte il punto di single-point-of-failure, sarebbe avere una singola coda con i lavoratori di lettura da esso risolvere il tuo problema? Se è così, allora il vostro problema si riduce alla configurazione RabbitMQ in una configurazione HA che consente di utilizzare questa soluzione. Ci sono un paio di approcci per farlo: o l'uso HALinux e un negozio condiviso per ottenere attivo / passivo HA con failover rapido, o impostare più di un broker parallela e deduplicazione nel client, magari utilizzando Redis o simili per farlo.

suggerisco di chiedere la tua domanda ancora una volta sulla mailing list RabbitMQ-discutere, dove più persone saranno in grado di offrire suggerimenti, e dove la discussione può essere archiviata per i posteri.

Altri suggerimenti

Sono d'accordo con Tony sull'approccio.

Ecco un 'mashup' di RabbitMQ, Redis che si potrebbe usare, invece di posizionare il proprio - http://xing.github.com/beetle/

Un costruito in modo che si può fare una forma di condivisione di un cambio modulo per le code, ma non esattamente robin round, è hashing coerente. rabbitmq_consistent_hash_exchange

Come troppo https://medium.com/@eranda/ RabbitMQ-x-coerente-hashing-con-WSO2-ESB-27479b8d1d21

Carta di spiegare, mette code a una distribuzione ponderata su un cerchio e poi con l'invio di chiave di routing casuale invierà alla coda più vicino. http://www8.org/w8-papers/2a-webserver/ caching / paper2.html

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