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

Hinweis: Wenn Sie direkt über das Dateisystem in der Datei arbeiten möchten, finden Sie die zuständige Konfigurationsdatei für einen Service in der Konfigurationsdatei ./etc/factory.xml. Details zur Konfiguration finden Sie bei den jeweiligen Services beschrieben. Ansonsten können Sie die Konfigurationsdatei direkt über den jeweiligen Service bearbeiten.

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 ConsumerQueue

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 RemoteInterfaces

Ü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 Route

Folgendes XML-Fragment fügt eine Route an eine bestimmte ConsumerQueue hinzu.

<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 RemoteInterfaces.

port

Der Port des entfernten Remote-Interfaces.

Allgemeine Einstellungen

images/download/attachments/21304601/Services_15_2-version-1-modificationdate-1545627178000-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.

Routing-Definitionen

images/download/attachments/21304601/Services_24-version-2-modificationdate-1539233734000-api-v2.png

images/download/thumbnails/21304601/Services_25-version-1-modificationdate-1539233984000-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/21304601/Services_26-version-1-modificationdate-1539235859000-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/21304601/Services_27-version-1-modificationdate-1539235881000-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.