Antwortweg AMQP

Prev Next

Einstellungen

(1) Alias: Auswahl eines AMQP-Aliases.

(2) Typ: Auswahl des Typs (Publish, Routing, Topic oder RPC). Der Typ RPC ist synchron, die anderen asynchron. Hinweis: Wenn Sie Style RPC verwenden, dann müssen Sie auch ein Folge-Profil angeben. Siehe (4). Der Grund ist, dass ein RPC-Aufruf eine Response erzeugt und diese wird dann vom Folgeprofil entgegengenommen.

(3) Queue/Topic: Name der Queue, an die gesendet wird, bzw. Name des Topics. Hinweis: Siehe z. B. https://www.rabbitmq.com/getstarted.html.

(4) Folge-Profil: Haben Sie in (2) den Typ RPC ausgewählt, muss hier ein Folge-Profil angegeben werden. Das Profil muss einen Eingangsagenten des Typs “Message” haben und aktiv sein.

(5) Max. Verarbeit./Aufbw: Gibt die Zeit in Sekunden an, die eine Message benötigen darf, um gesendet und verarbeitet zu werden.

  • Bei synchroner Message wartet das Profil so lange, bis das Ziel-Profil seine Verarbeitung (erfolgreich oder mit Fehler) beendet hat. Wird dabei die hier eingestellte Zeit überschritten, bricht dieser Antwortweg mit Fehler ab, obwohl vielleicht das Ziel-Profil später erfolgreich endet.

  • Bei asynchroner bzw. persistenter Message wartet das Profil nicht auf das Ziel-Profil, sondern der Antwortweg endet erfolgreich nach Übergabe der Daten. Die Message selbst hat hier aber eine endliche Lebenszeit. Konnte Sie nach dieser Zeit nicht vom Ziel-Profil angenommen werden, wird sie gelöscht. Die hier eingestellte Zeit ist die maximale Lebenszeit der Message. Hinweis: Die minimale Lebenszeit beträgt 12 Stunden (unabhängig vom eingestellten Wert).

(6) Message-Typ: Eine Message kann drei unterschiedliche Arten haben.

  • Synchron. Das Profil sendet die Message und macht erst dann weiter, wenn die Antwort erfolgt ist.

  • Asynchron. Das Profil sendet die Message und macht sofort weiter. Die Antwort ist unerheblich für die weitere Profilausführung.

  • Persistent. Arbeitet analog zu Asynchron. Als Erweiterung wird aber bei fehlender Gegenstelle die Message abgespeichert und versucht alle 50 ms die Message zu senden. Konnte in der Zeit (5) kein Erfolg erreicht werden, geht die Message verloren.

(7) Persistent/Durable: Mit dieser Checkbox markieren Sie, dass es sich bei der angegebenen Queue um eine "durable" Queue handelt (eine solche Queue überlebt einen Neustart des Brokers). Hinweis: Gilt nicht für Typ "RPC".

(8) Routing Key: Der Routing Key ist ein Message-Attribut, das der Server verwendet, um zu entscheiden, wie die Nachricht an Queues weitergeleitet werden soll. Für Details verwenden Sie bitte die Dokumentation des verwendeten AMQP-Servers, z. B. hier für RabbitMQ. Hinweis: Gilt nicht für Typ "Publish".

(9) Gesamten Job als gescheitert melden, wenn dieser Antwortweg fehlgeschlagen ist: Normalerweise gilt ein Job nicht notwendigerweise als fehlerhaft, wenn ein einzelner Antwortweg fehlschlägt (siehe Abschnitt Verhalten im Fehlerfall). Das kann hier aber mit dieser Option erzwungen werden.

(10) Zusätzlicher Text bei Fehler: Hier kann ein zusätzlicher Log-Text für den Fehlerfall angegeben werden.

AMQP Message Properties

Um eine Message Property zu setzen, muss man im Profil eine System-Variable der Form AMQP_<Name der Message Property> angelegt werden (Groß- und Kleinschreibung in der Property wird beachtet). Beispiel: Mit der Variable AMQP_TTL können sie die Message Property TTL setzen.

Besonderheit AMQP 0.9.1

Wenn Sie AMQP 0.9.1 verwenden, können nur bestimmte Message Properties mit den folgenden System-Variablen gesetzt werden.

  • AMQP_091BASIC_CONTENT_TYPE

  • AMQP_091BASIC_CONTENT_ENCODING

  • AMQP_091BASIC_MESSAGE_ID

  • AMQP_091BASIC_TIMESTAMP

  • AMQP_091BASIC_EXPIRATION

  • AMQP_091BASIC_APP_ID

  • AMQP_091BASIC_USER_ID

  • AMQP_091BASIC_TYPE

  • AMQP_091BASIC_PRIORITY

  • AMQP_091BASIC_CORRELATION_ID

Besonderheit AMQP 1.0

Für die Message Properties MessageId und CorrelationId gilt per Standard:

  • Falls keine Zuweisung für CorrelationId vorliegt, wird eine automatisch generierte UUID zugewiesen.

  • Falls keine Zuweisung für MessageId vorliegt, wird ein zufälliger String zugewiesen.

Dieses Standardverhalten kann man ab LDP Release 26.2.0 bei Bedarf über eine Wertzuweisung (gemäß Tabelle) an eine eigens definierte Profilvariable AMQP_SYS_MESSAGE_CORRELATION_ID_FORMAT übersteuern.

 WICHTIG  Voraussetzungen für die Nutzung der Nicht-Standard-Logik für CorrelationId und MessageID

  • Da Variablen nur im Kontext der Phase 3 (Mapping) definiert werden können, muss das Mapping zu diesem Zweck ggf. aktiviert werden.

  • Die Variable AMQP_SYS_MESSAGE_CORRELATION_ID_FORMAT muss im Profil explizit angelegt sein (Typ: String).

  • Der Variablen AMQP_SYS_MESSAGE_CORRELATION_ID_FORMAT muss beim Ausführen des Antwortwegs einer der unten genannten Werte zugewiesen sein.

Wertzuweisung (String)

Wirkung auf CorrelationId

Wirkung auf MessageId

string

Ausgabe als String


Standardwert: String-Abbild einer automatisch generierten UUID

Ausgabe als String


Standardwert: zufälliger String

long

Ausgabe als Long


Standardwert: Hash-Wert (Long) einer automatisch generierten UUID

Ausgabe als Long


Standardwert: zufälliger String

binary

Ausgabe als Byte Array


Standardwert: Byte Array des String-Abbilds einer  automatisch generierten UUID

Ausgabe als Byte-Array


Standardwert: zufälliger String

Standard*

Ausgabe als UUID


Standardwert: automatisch generierte UUID

Ausgabe als UUID


Standardwert: zufälliger String

*) Das mit vorherigen Versionen übereinstimmende Standardverhalten greift, wenn die Variable nicht existiert, keine Wertzuweisung vorliegt oder ein hier nicht aufgelisteter Wert zugewiesen wurde.

AMQP Message Headers

Wenn Sie AMQP 1.0 verwenden, können Sie Message Header mit System-Variablen der Form AMQP_SYS_<Name des Headers> setzen (Groß- und Kleinschreibung im Header wird beachtet).

Message Type

Per Default übergibt der Antwortweg AMQP/JMS Daten an den empfangenden Server als Byte-Nachricht. Um das zu ändern, da manche Server damit nicht zurecht kommen, kann im Profil die System-Variable AMQP_JMS_TEXTMESSAGE mit dem Wert true angelegt werden, dann werden die Daten als Text-Nachricht übergeben. Zudem muss im Antwortweg die Kodierung auf UTF-8 gesetzt sein.

Body Type

Siehe System-Variable AMQP_SYS_BodyType.