MessageService

Beim MessageService handelt es sich um ein nachrichtenbasiertes Datenübertragungssystem, bei dem Erzeuger von Nachrichten (Producer) diese über sogenannte Message-Queues zu eventuell vorhandenen Abonnenten (Subscribern) transportieren lassen, wo sie weiterverarbeitet werden können. Hierbei können auch Wege über mehrere Integration Server hinweg beschritten werden, indem man sogenannte Routes definiert.

XML-Konfiguration


Wichtiger Hinweis: Die Verfügbarkeit eines Services hängt von der erworbenen Lizenz ab und davon, ob der Service innerhalb der Konfigurationsdatei ./etc/factory.xml der Service-Factory eingetragen wurde (Änderungen erfordern Server-Neustart!). Dort finden Sie auch die zuständige Konfigurationsdatei für einen Service, ansonsten können Sie die Konfigurationsdatei des Services auch direkt in der GUI des Services bearbeiten (Änderungen erfordern Service-Neustart!).


Folgendes XML-Fragment mit allen möglichen Basiseinstellungen kann für die Konfiguration des MessageServices verwendet werden.


<Set name="defaultWaitTime">600000</Set>
<Set name="queueInterval">50</Set>


Die Werte haben folgende Bedeutung.


Wert

Bedeutung

defaultWaitTime

Die Einstellung der Maximalzeit bedeutet, die Zeit, die die jeweilige Nachricht unverarbeitet vom MessageService gehalten wird, bevor sie verworfen wird. Um diese Zeit zu verändern, ist es notwendig, die neue Zeit in Millisekunden anzugeben (z. B. 120000 für zwei Minuten). Sie ist für alle nachfolgend eintreffenden Nachrichten gültig.

queueInterval

Die Zeit, die gewartet wird, um nicht zugestellte asynchrone persistente Nachrichten nochmals zuzustellen. Die Zeit ist hierbei in Millisekunden anzugeben.


Folgendes XML-Fragment fügt dem MessageService eine ConsumerQueue hinzu.


<Call name="addConsumerQueue">
<Arg>
<New class="com.ebd.hub.services.message.ConsumerQueue">
<Arg>Context</Arg>
<Arg>Queue</Arg>
[Evtl. Hinzufuegen von Consumern]
</New>
</Arg>
</Call>


Context entspricht hierbei dem Message-Kontext, Queue der Message-Queue.

Hinzufügen eines Consumers zu einer Consumer Queue

Folgendes XML-Fragment fügt einer ConsumerQueue einen Consumer hinzu.


<Call name="addConsumer">
<Arg>classname</Arg>
<Arg>methodname</Arg>
</Call>


Dieses Fragment muss in den Platzhalter eingefügt werden, der in der ConsumerQueue oben zu sehen ist. classname ist dabei der Klassenname der Klasse, die als Subscriber definiert werden soll, methodname die Methode, die in der Klasse aufgerufen werden soll.

Aktivieren des Remote Interfaces


Über diesen Punkt kann das Remote-Interface aktiviert werden, über das entfernte Integration Server Nachrichten einliefern können, für die es keinen lokalen Subscriber gab. Folgendes XML-Fragment aktiviert das Remote-Interface.


<Call name="enableRemoteInterface">
<Arg>IP address</Arg>
<Arg type="int">port</Arg>
</Call>


IP address ist hierbei die IP-Adresse des Interfaces, auf die der Empfang eingeschränkt sein soll, oder 0.0.0.0, wenn keine solche Einschränkung existieren soll. port ist der zu verwendende Port.

Hinzufügen einer Remote Route


Folgendes XML-Fragment fügt eine Route an eine bestimmte ConsumerQueue hinzu. Dadurch werden Messages mit diesem Kontext und dieser Queue an den angegebenen, entfernten Integration Server gesendet. Der entfernte Integration Server muss ein aktives Remote Interface haben.


<Call name="addRoute">
<Arg>Context</Arg>
<Arg>Queue</Arg>
<Arg>
<New class="com.ebd.hub.services.message.Target">
<Arg>hostname</Arg>
<Arg type="int">port</Arg>
</New>
</Arg>
</Call>


Dabei haben die einzelnen Parameter die folgende Bedeutung.


Wert

Bedeutung

context

Der Name des Message-Kontexts.

queue

Der Name der Message-Queue.

hostname

Der Host-Name des entfernten Remote-Interfaces.

port

Der Port des entfernten Remote-Interfaces.

Allgemeine Einstellungen


images/download/attachments/128385810/Services_15_2-version-2-modificationdate-1726215194422-api-v2.png


(1) Aktivierung des Remote-Interfaces.

(2) Anzahl der Threads für die Verarbeitung von Messages.

(3) Entspricht dem XML-Parameter defaultWaitTime. Das ist die Zeit, die die jeweilige Nachricht unverarbeitet vom MessageService gehalten wird, bevor sie verworfen wird.

(4) Entspricht dem XML-Parameter queueInterval und ist die Zeit, die gewartet wird, um nicht zugestellte, asynchrone, persistente Nachrichten nochmals zuzustellen.

(5) Zeigt an, ob der Message Service über TLS läuft. Folgend der entsprechende Eintrag in der Konfigurationsdatei des Services.

<!--
Enable TLS for the remote interface. Please create and use your
own keystore. The one provided with the installation doesn't
contain a secure TLS certificate.
All Integration Servers that are going to connect this system
need to share the same certificate and private key
(i.e. keystore file)
Usage:
Parameter 1: Relative or absolute filename to the keystore file
Parameter 2: Password of the keystore (you can use obfuscation if preferred)
Parameter 3: Password of the Private Key (you can use obfuscation if preferred)
Parameter 4: 'true' if connecting peers need to do TLS-client authentication, 'false' otherwise
-->
<!--
<Call name="enableTLSHandling">
<Arg>./etc/ms_tls_keystore.dat</Arg>
<Arg>keystorepassword</Arg>
<Arg>keypassword</Arg>
<Arg type="boolean">false</Arg>
</Call>
-->

(6) Der Default-Port ist 8020 und sollte im Normalfall auch nicht verändert werden. Wenn Sie ihn verändern, dann bedenken Sie bitte, dass dies auf mehrere Stellen Einfluss hat, z. B. den Transport Manager, den DMZ-Server, usw.

Routing-Definitionen


images/download/attachments/128385810/Services_24-version-1-modificationdate-1675149584979-api-v2.png

images/download/thumbnails/128385810/Services_25-version-1-modificationdate-1675149584975-api-v2.png


(1) Liste der Remote-Interfaces. Über das Kontextmenü können Einträge hinzugefügt, bearbeitet und entfernt werden. Siehe (2),

(2) Protokoll, Hostname (oder IP-Adresse) und Port des Remote-Interfaces.

Definierte Consumer-Queues


images/download/attachments/128385810/Services_26-version-1-modificationdate-1675149584970-api-v2.png


(1) Liste der definierten Consumer-Queues. Angezeigt werden Kontext, Queue, Anzahl der Consumer, das Vorhandensein einer Routendefinition und die Anzahl der Messages, die noch abgearbeitet werden müssen. Über das Kontextmenü kann ein Eintrag hinzugefügt, entfernt und bearbeitet werden.

Consumer-Queue bearbeiten


images/download/attachments/128385810/Services_27-version-1-modificationdate-1675149584966-api-v2.png


(1) Kontext- und Queue-Name.

(2) Über das Kontextmenü können Sie einen Consumer entfernen und hinzufügen.

(3) Über das Kontextmenü können Sie Routingdefinitionen entfernen und hinzufügen.

Loglevel-Abhängigkeiten


Änderungen des Loglevels beim LogService haben keinen Einfluss auf das Logverhalten des MessageServices.

Wird der Service in den Verbose-Mode gesetzt, werden folgende zusätzliche Loggingschritte vorgenommen.


  • Beim Feuern einer Message.

  • Bei einem Verbindungsaufbau über das RemoteInterface wird die Tatsache an sich und die IP-Adresse des Anfragenden festgehalten, unabhängig davon, ob bei dieser Verbindung tatsächlich eine Message empfangen wird oder nicht.

  • Beim Empfang einer Nachricht über das RemoteInterface. Hierbei werden Informationen über das Ereignis an sich und zusätzliche Informationen, wie z. B. die Anzahl an empfangenen Bytes, etc. gemeldet.

  • Beim Hinzufügen einer Nachricht zu einer Message-Queue.