2009-09-08 12 views
5

È possibile avere più utenti in ascolto su una singola istanza MSMQ e utilizzare l'interfaccia Selettiva di consumo per avere ciascuno di essi trattare un sottoinsieme distinto dei messaggi? Non riesco a far funzionare correttamente questo scenario utilizzando pub/sub: un singolo utente in coda funziona correttamente, ma quando si utilizzano> 1 utenti (diverse istanze dello stesso eseguibile) non viene visualizzato alcun messaggio. A quanto ho capito, questo non è il caso dei "consumatori in concorrenza", poiché solo un singolo consumatore elaborerà un singolo messaggio.Più utenti per una singola coda in MassTransit

Qualsiasi aiuto o suggerimento è apprezzato.

risposta

2

Se si utilizza MassTransit per inviare messaggi da una coda MSMQ, è consigliabile che la coda sia locale nella casella.

Detto questo, se si dispone di più processi che stanno leggendo dalla stessa coda ai fini della distribuzione del carico del messaggio, è possibile utilizzare la ricezione selettiva per consumare solo i messaggi in ogni istanza rilevanti per tale processo.

Ad esempio, se si dispone di più istanze di un'applicazione che invia messaggi a un servizio e tale servizio risponde con un messaggio correlato, è possibile iscriversi al messaggio correlato per identificatore e verranno recapitati solo i messaggi sottoscritti. I messaggi che non sono selezionati rimarranno in coda fino a quando non saranno processati da nessuno dei processi interessati.

A causa di questo schema, si consiglia vivamente di impostare una scadenza sul messaggio in modo che le risposte ignorate non intasino la coda nel tempo.

Questo scenario è piuttosto comune quando si replica un modello di richiesta/risposta tramite messaggistica.

Problemi correlati