RabbitMQ è perfetto per questa situazione. Hai un numero di opzioni per fare ciò che vuoi. Suggerisco di leggere la documentazione per capire meglio. Ti suggerirei di utilizzare un argomento o uno scambio diretto. L'argomento è più flessibile. Va così.
Il codice produttore si collega al RabbitMQ Broker e crea e scambia con un nome specifico.
Il produttore pubblica per lo scambio. Ogni messaggio pubblicato sarà pubblicato con una chiave di instradamento.
Il cliente si connette al broker RabbitMQ.
consumatori crea lega coda
consumatori Coda per lo scambio, lo stesso cambio definito nel produttore. Il bind include anche le chiavi di instradamento per ogni messaggio richiesto per questo particolare utente.
Diciamo che stavate pubblicando i messaggi di registro. La chiave di routing potrebbe essere qualcosa come "log.info", "log.warn", "log.error". Ogni messaggio pubblicato dal produttore avrà la relativa chiave di routing allegata. Avrai quindi un consumatore che invia e invia per tutti i messaggi di errore e un altro che scrive tutti i messaggi di errore in un file. Quindi l'emailer definirà l'associazione dalla sua coda allo scambio con la chiave di routing "log.error". In questo modo, sebbene lo scambio riceva tutti i messaggi, la coda definita per l'e-mail conterrà solo i messaggi di errore. Il filelogger definirà una nuova coda separata legata allo stesso scambio e configurerà una chiave di instradamento diversa. È possibile eseguire tre binding separati per le tre chiavi di routing differenti o utilizzare semplicemente il "log. *" Jolly per richiedere tutti i messaggi dallo scambio che iniziano con il registro.
Questo è un semplice esempio che mostra come è possibile ottenere ciò che si vuole fare.
sguardo here per esempi di codice specifico numero di esercitazione 5.
Se davvero il vostro consumatore deve iscriversi ** ** (non interessato a messaggi che vengono pubblicati _prima_ la sottoscrizione), l'abbonamento (e vincolante con la regola di selezione) non è un _queue_ esistente ma uno _exchange_ esistente (come indicato di seguito). Quindi, la formulazione della domanda deve essere modificata. – Myobis