Abbiamo un'applicazione che utilizzerà RabbitMQ e che ha diverse code per il passaggio di messaggi tra i livelli.Scambio di argomenti con scambio diretto in RabbitMQ
Inizialmente, stavo progettando di utilizzare più scambi diretti, uno per ogni tipo di messaggio, ma sembra che avere un singolo scambio di argomenti con le code utilizzando diversi binding di tasti di routing otterrà la stessa cosa.
Avere uno scambio singolo sembra anche essere un po 'più facile da mantenere, ma mi chiedevo se ci sono dei benefici (se ce ne sono) di farlo in un modo rispetto all'altro?
Opzione 1, l'utilizzo di più scambi diretti:
ExchangeA (type: direct)
-QueueA
ExchangeB (type: direct)
-QueueB
ExchangeC (type: direct)
-QueueC
Opzione 2, utilizzando singolo scambio argomento:
Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")
concordo. Più code con chiavi di routing appropriate è molto più facile da gestire. L'unico vantaggio dell'opzione 1 che mi viene in mente è che gli scambi multipli potrebbero essere ospitati su hardware separato, ottenendo in tal modo un ridimensionamento verticale. Tuttavia, se il tuo hardware non funziona, potresti non aver bisogno di seguire questa strada. –
Penso che il vantaggio dell'uso di Topic sia che se in futuro dovessi inviare lo stesso messaggio a più code nel tuo scambio, la tua opzione 2 sarebbe più desiderabile. – gigi2