2017-04-21 3 views
2

Ich habe einen Mikro-Service, der eine topic in WebSphere MQ abonniert. Das Abonnement lautet managed und durable. Ich setze explizit die subscription name, so dass es verwendet werden kann, um zurück zu der Warteschlange zu verbinden, nach der Wiederherstellung von jedem Mikro-Service-Fehler. Das Abonnement funktioniert wie erwartet.Websphere MQ - Thema Abonnement mit mehreren Verbrauchern

Aber ich muss möglicherweise den Micro-Service erweitern und mehrere Instanzen ausführen. In diesem Fall werde ich am Ende mehrere Verbraucher zum selben Thema haben. Aber hier schlägt es mit Fehler 2429 : MQRC_SUBSCRIPTION_IN_USE fehl. Ich bin nicht in der Lage, mehr als einen Verbraucher zum Thema Abonnement zu führen. Hinweis: Eine Nachricht sollte nur an einen der Verbraucher gesendet werden.

Irgendwelche Gedanken?

IBM Websphere Version: 7.5 Ich verwende die C-Client-API, um eine Verbindung mit dem MQ herzustellen.

Antwort

6

Wenn Sie einen Abonnenten verwenden, wird das, was Sie beschreiben, nur über die IBM MQ-Klassen für JMS-API unterstützt. In Version 7.0 und höher können Sie Cloned-Subskriptionen verwenden (dies ist eine IBM Erweiterung der JMS-Spezifikation). Zusätzlich können Sie in MQ Version 8.0 und höher Shared Subscriptions alternativ verwenden, die Teil der JMS 2.0-Spezifikation sind. Mit diesen beiden Optionen können mehrere Abonnenten mit demselben Abonnement verbunden werden und nur eine von ihnen erhält jede veröffentlichte Nachricht.


UPDATE 20170710

Nach diesem APAR IV96489: XMS.NET DOESN'T ALLOW SHARED SUBSCRIPTIONS EVEN WHEN CLONESUP PROPERTY IS ENABLED wird XMS.NET auch Cloned Abonnements aber wegen eines Mangels unterstützen soll dies nicht bis 8.0.0.8 oder 9.0 unterstützt werden .0.2 oder wenn Sie das IFIX für das APAR oben anfordern.


Sie können Ihren Mikro-Service erhalten aus einer Warteschlange statt der Anmeldung zu einem Thema etwas ähnliches mit anderen APIs wie C erreichen durch Umwandlung.

Um die veröffentlichten Nachrichten an die Warteschlange erhalten Sie haben zwei Möglichkeiten:

  1. Einrichten eines Verwaltungs Abonnement auf dem WS-Manager. Sie können dies auf verschiedene Arten tun. Im folgenden Beispiel wird ein MQSC-Befehl verwendet.

    DEFINE SUB('XYZ') TOPICSTR('SOME/TOPIC') DEST(SOME.QUEUE)

  2. erstellen Dienstprogramm-Anwendung, die ein dauerhaftes Abonnement eine Warteschlange und erstellen mit der mitgeliefertem Warteschlange, der einzige Zweck dieses App eine bereitgestellte Warteschlange öffnen kann, würde es verwendet werden, wäre abonnieren und abbestellen nicht um eine der veröffentlichten Nachrichten zu konsumieren.


Verwendung des obigen Verfahrens kann jeder ausgegebenen Meldung nur (GET) gelesen werden, aus der Warteschlange von einem Prozess oder Thread.

Verwandte Themen