Detail
Fehlerbehebung
Wichtig
JMS ist eine Java-API, die das Versenden und Empfangen von Nachrichten mit einem Publish/Subscribe-Pattern zu standardisieren (https://www.oracle.com/technical-resources/articles/java/intro-java-message-service.html).
Ein Message-Queue-Server, der über JMS angsprochen werden kann ist beispielsweise IBM MQ (https://www.ibm.com/docs/en/ibm-mq/9.3). Eine open-source Alternative ist ActiveMQ (https://activemq.apache.org/).
Anforderung
Eine TopLogic-Anwendung soll Nachrichten an einen JMS-Message-Broker schicken und von dort empfangen können.
Für das Versenden von Nachrichten soll in einem Service "JMSSenderService" die Verbindung zu einem JMS-Message-Broker konfiguriert werden können. Dieser Dienst soll verwendet werden, um in einer neuen TL-Script-Funktion "sendMessage(channel, message)" eine Nachricht abschicken zu können. Die Message soll dabei entweder ein Binärwert, eine Zeichenkette, ein JSON-Objekt (Map), oder eine XML-Struktur ("HTMLFragment") sein.
Für den Empfang von Nachrichten soll ein einem Service "JMSReceiverService" ebenfalls eine Verbindung zu einem JMS-Message-Broker und eine Menge von Channel-Abos konfiguriert werden können. Für jeden konfigurierten Channel soll ein Handler registriert werden können, der aufgerufen wird, wenn eine Nachricht über diesen Channel eingeht. Es soll eine Handler-Implementierung geben, die über eine TL-Script-Funktion parametrisiert werden kann. Das Script soll die Nachricht und den Channel als Argument erhalten und eine beliebige Aktion ausführen können.
Test
- IBM MQ installieren (https://developer.ibm.com/tutorials/mq-connect-app-queue-manager-containers/)
- Sende-Verbindung zu IBM MQ in TopLogic konfigurieren.
- Nachricht über jmsSend() schicken.
- In der Admin-Oberfläche von IBM MQ prüfen, ob die Nachricht angekommen ist.
- Empfänger in TopLogic konfigurieren.
- (Nachricht aus der Admin-Oberfläche von IBM MQ erzeugen.) Nicht notwendig, wenn noch Nachrichten vom Senden in der Queue.
- Prüfen, dass die Nachricht in TopLogic angekommen ist und verarbeitet wurde.
- Selber Test mit ActiveMQ.
- z.B. über oder Podman(https://github.com/apache/activemq-artemis/blob/main/docs/user-manual/docker.adoc/)