Frage

Ist es möglich, mehrere Verbraucher haben auf einer einzigen MSMQ Instanz zu hören und die selektiven Consumer-Schnittstelle verwenden, um mit jedem man mit einer bestimmten Teilmenge der Nachrichten? Ich kann nicht scheinen, um dieses Szenario zu erhalten zu arbeiten richtig mit pub / sub - ein einzelner Verbraucher in der Warteschlange funktioniert gut, aber bei der Verwendung von> 1 Verbraucher (mehrere Instanzen desselben ausführbaren) keine Nachrichten überall erscheinen. Wie ich es verstehe, ist dies nicht der Fall von "konkurrierenden Verbrauchern, da nur ein einziger Verbraucher eine einzelne Nachricht verarbeiten wird.

Jede Hilfe oder Zeiger geschätzt.

War es hilfreich?

Lösung

Wenn Sie Dispatch-Nachrichten von einem MSMQ-Warteschlange verwenden Masstransit, empfiehlt es sich, dass die Warteschlange in das Feld lokal ist.

That being said, wenn Sie mehrere Prozesse, die für die Zwecke der Verteilung der Nachrichtenlast aus der gleichen Warteschlange lesen, können Sie die selektive Anwendung erhält nur konsumieren, um Nachrichten in jedem Fall, die zu diesem Prozess relevant sind.

Zum Beispiel, wenn Sie mehrere Instanzen einer Anwendung, dass Nachrichten an einen Dienst und dass Service antwortet mit einer korrelierten Nachricht, die Sie die korrelierte Nachricht durch Bezeichner abonnieren können und nur die abonnierten Nachrichten überbracht. Die Nachrichten, die nicht ausgewählt wurden, werden in der Warteschlange verbleiben, bis sie von einem der Verfahren verarbeitet, die interessiert sind.

Aufgrund dieses Muster, ist es sehr empfehlenswert, dass ein Ablauf auf die Nachricht so ignoriert Antworten verstopfen die Warteschlange nicht im Laufe der Zeit eingestellt werden.

Dieses Szenario ist ziemlich häufig, wenn ein Request / Response-Muster über die Nachrichten repliziert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top