Domanda

E 'possibile avere diversi consumatori in ascolto su una singola istanza MSMQ e utilizzare l'interfaccia dei consumatori selettivo per avere ciascuna un affare con un sottoinsieme distinta dei messaggi? Io non riesco a ottenere questo scenario per funzionare correttamente utilizzando pub / sub - un singolo consumatore sulla coda funziona bene, ma quando si utilizza> 1 i consumatori (diverse istanze dello stesso eseguibile) nessun messaggio compare da nessuna parte. Se ho capito bene, questo non è il caso di 'consumatori' concorrenti, dal momento che solo un singolo consumatore potrà elaborare un singolo messaggio.

Qualsiasi aiuto o puntatori sono apprezzati.

È stato utile?

Soluzione

Se si utilizza MassTransit di inviare messaggi da una coda MSMQ, si raccomanda che la coda è locale alla casella.

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

Per esempio, se si dispone di più istanze di un'applicazione che inviano messaggi a un servizio e che il servizio risponde con un messaggio correlato, è possibile iscriversi al messaggio correlato da identificatore e solo i messaggi sottoscritti verrà consegnato. I messaggi che non sono stati selezionati rimangono nella coda fino elaborata da uno dei processi che sono interessati.

A causa di questo motivo, si consiglia vivamente che tale scadenza essere impostata sul messaggio risposte in modo ignorati non intasare la coda nel corso del tempo.

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

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