2017-12-23 9 views
0

Ein Fall, in dem Absender Nachrichten an eine Warteschlange senden, z. B. message1 wird von sender1 an eine Warteschlange gesendet. Jetzt verbindet sich ein Consumer namens consumer1 mit der Warteschlange und liest die Nachricht message1.Eine an die JMS-Warteschlange gesendete Nachricht wird nur von einem einzigen Verbraucher konsumiert?

Es gibt einen anderen Verbraucher mit dem Namen consumer2. Aber die Nachricht message1 ist bereits von consumer1 verbraucht, so dass es für consumer2 nicht verfügbar sein wird.

Wenn eine nächste Nachricht in queue eingeht, erhält consumer2 diese Nachricht möglicherweise, wenn sie die Warteschlange vor consumer1 liest.

Bedeutet es, dass alles ein Fall ist, ob ein Verbraucher die Warteschlange vor der anderen liest, um die erste verfügbare Nachricht von der queue zu bekommen?

Antwort

1

Dies ist die Art einer Warteschlange in JMS, Nachrichten werden an einen Verbraucher gesendet und sobald sie gelöscht sind, kann der nächste Verbraucher die nächste Nachricht erhalten und so weiter. Dies wird oft als konkurrierende Verbraucher oder Lastenausgleich bezeichnet. Die Benutzer können sich die Arbeit teilen, wenn Aufträge oder Arbeitselemente in die Warteschlange eingereiht werden, was einen höheren Durchsatz ermöglicht, wenn die Arbeit, die mit den Elementen in der Warteschlange verbunden ist, viel Zeit in Anspruch nehmen kann.

Es gibt Optionen, die abhängig vom Nachrichtenbroker einen Verbraucher exklusiv machen, so dass nur dieser Verbraucher Nachrichten aus der Warteschlange lesen kann, während die anderen Verbraucher sitzen und darauf warten, dass der exklusive Verbraucher sie verlässt, was sie zu Backups macht. Andere Optionen bestehen darin, eine bestimmte Nachricht wie Apache Camel an mehr als eine Warteschlange weiterzuleiten oder AcitveMQ Virtual Topics zu verwenden, um Nachrichten an ein Thema zu senden und diese Nachricht dann in bestimmte Consumer-Warteschlangen einzuordnen.

Die Lösung hängt von dem Broker ab, den Sie verwenden, und dem Problem, das Sie zu lösen versuchen, von dem Sie in der Frage nicht wirklich deutlich gemacht haben.

+0

Eigentlich war ich nur neugierig, dass, wenn eine Warteschlange Nachricht von nur einem Verbraucher verbraucht wird, dann warum eine Warteschlange von mehreren Verbrauchern zugegriffen werden kann? Welchen Vorteil wird es uns geben? Danke für die Antwort. – muasif80

+0

Da es sich um eine Warteschlange handelt, für die sie definiert sind, lesen Sie die JMS-Spezifikation, wenn Sie immer noch verwirrt sind. –

Verwandte Themen