Konfiguration des
JMS-Empfänger-Adapters
Sie konfigurieren den JMS-Empfänger-Adapter, um XI-Messages vom Integration Server oder vom PCK in JMS-Nachrichten zu verwandeln.
Die Adapterkonfiguration ist Teil der Festlegung eines Kommunikationskanals im Integration Server oder im PCK und wird auf dem Registerblatt Parametervorgenommen. Zusätzlich zur Adapterkonfiguration können auf der Registerkarte Module im Modul-Prozessor generische Module angegeben werden, die den Adapter mit Zusatzfunktionen ausstatten.
1. Sie haben einen Kommunikationskanal angelegt oder einen bestehenden Kommunikationskanal geöffnet.
2. Sie haben auf der Registerkarte Parameter den Adaptertyp JMSausgewählt.
3. Sie haben den Adapter über den Auswahlknopf Empfänger als Empfänger-Adapter definiert.
Zur Konfiguration des Adapters machen Sie folgende Angaben:
SonicMQ JMS Provider
WebSphereMQ (MQ Series) JMS Provider
Zugriff auf JMS Provider mit JNDI
Administrierbare Objekte des JMS Provider aus Datei lesen
Generischer Zugriff auf JMS-Provider
JMS 1.x
Wählen Sie die Adapter-Engine auf dem Integration Server oder eine dezentral installierte Adapter-Engine aus. Diese Auswahl ist im PCK nicht möglich.
In Abhängigkeit vom gewählten Transport-Protokoll machen Sie Angaben zum jeweiligen JMS Provider. Die Bedeutung der Parameter entnehmen Sie der jeweiligen JMS-Provider-Dokumentation. Siehe auch JMS-Provider-spezifische Einstellungen
Parameter |
Eingabe |
Transaktionale JMS-Session |
Falls eine transaktionale JMS-Session verwendet werden soll, setzen Sie das Kennzeichen. Eine transaktionale Session wird nach der Verarbeitung einer Message entweder mit COMMIT abgeschlossen oder im Fehlerfall mit ROLLBACK zurückgesetzt. |
Zustellungsmodus des Message-Erzeugers |
Geben Sie den Zustellungsmodus des Message-Produzenten an. Es gibt folgende Möglichkeiten: ● JMS-Nachrichten im JMS-Provider speichern ● JMS-Nachrichten im JMS-Provider nicht speichern |
JMS-ReplyTo-Queue-Name |
Geben Sie den Namen der Queue an, an die Antworten geschickt werden sollen. |
Gültigkeitsdauer der JMS-Message |
Geben Sie die Verfallszeit der JMS-Nachricht als JMS-Parameter in Millisekunden an. |
JMS-Message-Priorität |
Geben Sie die Priorität der JMS-Nachricht an. |
JMS-Queue-Benutzer |
Benutzer für den Zugriff auf die JMS-Queue. |
JMS-Queue-Kennwort |
Kennwort mit Bestätigung für den Zugriff auf die JMS-Queue. |
Legen Sie die Korrelationseinstellungen fest:
● Setzen Sie die JMS Correlation ID auf:
○ XI-Message-ID (MessageID) (Vorgabewert)
○ XI-Referenz-ID (RefToMessageID)
○ XI-Konversations-ID (ConversationID)
○ Kein Wert
● JMSCorrelationID der Anfrage sichern
Setzen Sie, falls gewünscht, das Kennzeichen zum Sichern der JMS-Korrelations-ID der Anfrage.
● Setzen Sie die JMSProperty auf:
Geben Sie den Namen der JMS Property ein.
● Geben Sie an, welchen Wert das JMS-Property haben soll:
○ XI-Message-ID (MessageID) (Vorgabewert)
○ XI-Referenz-ID (RefToMessageID)
○ XI-Konversations-ID (ConversationID)
○ Kein Wert
Parameter |
Eingabe |
Mapping der Message |
● Wenn die gesamte Message in der JMS-Payload enthalten sein soll, wählen Sie Gesamte Message = JMS-Payload. ● Wenn nur die Payload der Message in die JMS-Payload eingestellt werden soll, dann wählen Sie Message-Payload = JMS-Payload. |
Behandlung von blockierten XI-Messages |
Der Adapter ist in der Lage festzustellen, ob ein Abbruch zwischen dem JMS-Commit und dem Commit auf der Datenbank des Adapter-Framework eingetreten ist. Der Adapter erkennt den dadurch erzeugten doppelten Datensatz. Sie haben folgende Einstellung zur Auswahl: ● Ausnahme auslösen (erneuter Message-Versuch später möglich) (Vorgabe). ● Warnung ignorieren und Message an JMS senden (Dubletten möglich) Ein doppelter Datensatz wird dann erzeugt, wenn das JMS-Commit durchgeführt wird, nicht jedoch das Commit auf der Datenbank des Adapter-Framework. Wenn Sie diese Option wählen, dann müssen Sie im JMS-Umfeld sicherstellen, dass diese Message noch nicht empfangen wurde. ● Message als übermittelt markieren (Verlust der Message möglich) Ein Verlust der Message tritt dann ein, wenn auch das JMS-Commit noch nicht durchgeführt wurde. Wenn Sie diese Option wählen, dann müssen Sie im JMS-Umfeld sicherstellen, dass diese Message schon empfangen wurde.
Ein Beispiel für die Verwendung des Parameters finden Sie unten unter Beispiel. |
Zeitraum der Duplikatprüfung für EO(IO) in Sek. |
Für die Prüfung doppelter Messages müssen IDs auf der Datenbank gesichert werden. Damit die Größe der Datenbank nicht unnötig wächst, müssen diese IDs nach einiger Zeit gelöscht werden. Geben Sie in Sekunden an, wann die IDs gelöscht werden sollen (z. B. nach einem Tag, wenn Sie täglich das Message-Monitoring kontrollieren). |
XI Delivery Acknowledgment (Adapter ist Endpunkt) senden |
Wenn der JMS-Empfänger eine Anwendung ist, dann sollte der JMS-Adapter ein Delivery-Acknowledgement zurückschicken. Setzen Sie das Kennzeichen. |
Parameter |
Eingabe |
Warten nach Message-Fehler (ms) |
Geben Sie die Anzahl der Millisekunden an, die bei einem Verarbeitungsfehler gewartet werden soll, bis weitere Messages verarbeitet werden. Eine gewisse Wartezeit kann beispielsweise bei transaktionaler Verarbeitung sinnvoll sein, da fehlerhafte Messages nach einem ROLLBACK in der Queue stehen bleiben.
|
Warten bis zur neuen Verbindung (ms) |
Geben Sie einen Zeitraum an, nachdem bei einem JMS-seitigen Verbindungsfehler versucht werden soll, die Verbindung neu aufzubauen. Das Zeitintervall wird in Millisekunden angegeben. Bei einem Wert von -1 wird nicht versucht, die Verbindung neu aufzubauen.
Diese Funktion setzt voraus, dass Ihr JMS-Provider die Registrierung eines ExceptionListener unterstützt.
|
Neue Verbindung, wenn Ausnahmetext beginnt mit
|
Falls der JMS Provider bei Verbindungsfehlern nicht den vom JMS-Adapter registrierten ExceptionListener aufruft, können Sie mit dieser Eingabe die Wiederaufnahme der Verbindung erzwingen. Falls beim Verschicken einer Nachricht eine JMS-Exception ausgelöst wird, wird der hier enthaltene Freitext mit dem angegebenen String verglichen und nach dem unter Wait Before Reconnect (msecs) angegebenen Zeitintervall ein Wiederaufbau der Verbindung vorgenommen.
Setzen Sie diesen Parameter nur, wenn Ihr JMS-Provider die Registrierung eines ExceptionListener nicht unterstützt.
|
Um Adapterattribute im Message-Header der XI-Message auszuwerten, wählen Sie Adapterspezifische Message-Attribute verwenden.
Um die folgenden Attribute in den XI-Message-Header auszuwerten, setzen Sie das jeweilige Kennzeichen:
● Wenn das Fehlen von Message-Attributen zu Fehlermeldungen führen soll, wählen Sie Fehlerausgabe beim Fehlen adapterspezifischer Message-Attribute.
Ist das Kennzeichen gesetzt und in der Message fehlt der Header für adapterspezifische Nachrichtenattribute oder eines der gesetzten Attribute, dann führt dies zu einer Delivery Exception im Audit-Log der Message.
Setzen Sie das Kennzeichen nicht, und es fehlen Nachrichtenattribute, dann greift der Adapter auf Informationen aus der Adapterkonfiguration zu.
Name |
Technischer Name |
Korrelations-ID der JMS-Message |
DCJMSCorreleationID |
JMS-Message-Ablauf |
DCJMSExpiration |
JMS-Message-Priorität |
DCJMSPriority |
ReplyTo-Destination der JMS-Message |
DCJMSReplyTo |
JMS Nachrichtenzeit (Timestamp) |
DCJMSTimestamp |
Möchten Sie zusätzliche JMS-Message-Attribute setzen, wählen Sie Zusätzliche JMS-Message-Eigenschaften (Maximum 10) spezifizieren.
● Geben Sie in der Tabelle Namen und JavaType der JMS-Message-Eigenschaften an, deren Werte in den Message-Header der XI-Message übernommen werden sollen.
Unter Java Type definieren Sie den JMS-Java-Message-Typ für das Attribut in der erzeugten JMS-Message fest. Mögliche Eingaben sind:
○ boolean
○ byte
○ short
○ Int
○ long
○ float
○ double
○ String
Die technischen Namen der zusätzlichen Attribute lauten DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9.
Sie können in der Tabelle mehr als zehn Eigenschaften eingeben. Es werden jedoch nur die ersten zehn berücksichtigt.
Der Attributnamensraum für den Adapter ist: http://sap.com/xi/XI/System/JMS.
Setzen Sie den Adapter auf Aktiv, um ihn für den Message-Austausch einzusetzen.
Um zusätzliche Einstellungen vorzunehmen, oder die Standardeinstellungen zu verändern, verwenden Sie die Parameter und Werte in der Tabelle:
Folgende Parameter können z.B. gesetzt werden:
Name |
Wert |
JMSMessageClass |
com.ibm.jms.JMSMessage |
JMS.Message.method.setStringProperty |
java.lang.String XAppId, java.lang.String myapp |
Weitere JMS-Parameter können für alle JMS-Provider gesetzt werden.
Ein typischer Vorgang zur Behandlung von hängenden Messages ist:
...
1. Der JMS-Empfänger-Adapter hat für den Parameter die Voreinstellung Ausnahme auslösen.
2. Sie sehen im Message- und/oder Adapter-Monitor folgende Ausnahme:
Der Kanal ist so konfiguriert, dass er einen wiederherstellbaren vorläufigen Fehler für diese Warnung auslöst (Standard). Entscheiden Sie, ob Sie diese Message umgehen möchten. Setzen Sie in diesem Fall den Kanalparameter Pending Handling auf 'Bypass' und starten Sie die Message erneut.
3. Stellen Sie sicher, dass keine weiteren Messages durch diesen Kommunikationskanal geschickt werden, indem Sie den korrespondierenden Senderkanal deaktivieren.
4. Sie prüfen, ob die Message(s) im JMS-Umfeld angekommen sind.
a. Falls die Message im JMS-Umfeld angekommen ist, wählen Sie Option Message als übermittelt markieren (Verlust der Message möglich).
b. Falls die Message nicht im JMS-Umfeld angekommen ist, wählen Sie Option Warnung ignorieren und Message an JMS senden (Dubletten möglich).
c. Wählen Sie Wiederholen im Message-Monitoring.
Haben Sie Messages vorliegen, von denen einige im JMS-Umfeld angekommen sind und andere nicht, dann müssen Sie den Vorgang zweimal durchführen und jeweils die passenden Messages wiederholt senden.
5. Stellen Sie nun den Parameter im Kommunikationskanal wieder auf Ausnahme auslösen um.
6. Aktivieren Sie den korrespondierenden Sender-Kommunikationskanal.