Mi sembra un errore. Il punto di pubblicazione di un messaggio è che sei disaccoppiato dal componente o dai componenti che ricevono il messaggio.
La logica aziendale in base alla quale il messaggio viene smistato o indirizzato in qualsiasi modo non rientra nell'ambito del componente di pubblicazione.
Ma c'è ovviamente una connessione tra l'editore e i consumatori del messaggio in quanto entrambi conoscono il nome dell'argomento. cioè se hai un solo argomento devi ascoltare tutti i messaggi. Quindi la scelta del nome è importante.
Il mio sentimento qui è che il tuo collega sta confondendo argomenti e code. È positivo che il componente abbia una propria coda privata. Ciò gli consente di funzionare senza urtare altri componenti. Ma i nomi degli argomenti devono essere pubblici e immutabili in modo da poter inserire componenti nel flusso generale.
Quindi nel tuo caso avrei l'argomento 'orange' e il nome della coda 'juicer1'. Quando il componente juicer si avvia, crea il suo nome di coda Univoco e indirizza tutti i messaggi di / some / fanout / round robin 'orange'. Quindi inizia a estrarli dalla sua coda privata per essere elaborati.
Instradamento complesso e "MasterWorkers" al fine di ottenere il routing più complesso richiesto, dovrai programmare tale routing in un componente e impostarlo un po 'come questo
Worker -> starts up and contacts master worker "I'm ready for work! here is my queue name"
MasterWorker -> remembers the workers queue name
incoming queue -> pulled by MasterWorker
MasterWorker
-> do I have any Workers available?
-> does the avaialble worker match business logic x?
-> send the work to the workers queue