HTTP-Messagebus
Die HTTP-Messagebus-Extension (@5minds/processcube_engine_http_signal_extension)
transportiert Engine-Signale und -Nachrichten über HTTP — in beide Richtungen:
Outbound (Push an fremde HTTP-Endpunkte mit Retry) und Inbound (eigene
HTTP-Routes, über die externe Systeme Signale/Messages einliefern).
Architektur
Registrierung über onLoad, Anbindung über onBeforeResuming/onReady. Der
HttpAdapter implementiert IMessageBusAdapter mit zwei Pfaden:
- Outbound — Push an eine Ziel-URL mit exponentiellem Backoff-Retry. Die URL unterstützt Platzhalter:
{signalName},{messageName},{engineId},{correlationId}. - Inbound — registriert Routes unter
<basePath>/signals/:nameund<basePath>/messages/:name; eingehende Requests werden optional per Auth-Header geprüft und an die Engine dispatcht.
Einrichten
Im Engine-Image enthalten. Aktiv, sobald mindestens eine der Richtungen
eingeschaltet ist (HTTP_MESSAGEBUS_OUT_ENABLED=true oder
HTTP_MESSAGEBUS_IN_ENABLED=true). Outbound benötigt zusätzlich eine Ziel-URL.
Konfiguration
Outbound (Push)
| Env-Variable | Default | Beschreibung |
|---|---|---|
HTTP_MESSAGEBUS_OUT_ENABLED | false | Boolean, optional. Outbound-Requests aktivieren |
HTTP_MESSAGEBUS_OUT_ENDPOINT_URL | — | String, Pflicht (wenn Outbound). Ziel-URL; Platzhalter {signalName}, {messageName}, {engineId}, {correlationId} |
HTTP_MESSAGEBUS_OUT_HEADERS | {} | JSON, optional. Zusätzliche HTTP-Header als JSON-String |
HTTP_MESSAGEBUS_OUT_SIGNAL_NAME_HEADER | — | String, optional. Eigener Header-Name für den Signal-Namen |
HTTP_MESSAGEBUS_OUT_RETRY_MAX | 3 | Integer, optional. Maximale Anzahl Wiederholungen |
HTTP_MESSAGEBUS_OUT_RETRY_BASE_DELAY_MS | 500 | Integer, optional. Basis-Verzögerung (ms) |
HTTP_MESSAGEBUS_OUT_RETRY_FACTOR | 2 | Float, optional. Exponentieller Backoff-Faktor |
HTTP_MESSAGEBUS_OUT_RETRY_MAX_DELAY_MS | 5000 | Integer, optional. Maximale Verzögerung zwischen Versuchen (ms) |
HTTP_MESSAGEBUS_OUT_RETRY_JITTER | true | Boolean, optional. Zufallsanteil auf das Retry-Delay |
HTTP_MESSAGEBUS_OUT_TIMEOUT_MS | 30000 | Integer, optional. Request-Timeout (ms) |
HTTP_MESSAGEBUS_OUT_FAIL_ON_ERROR | false | Boolean, optional. Bei Fehler Exception werfen (true) statt nur loggen |
Inbound (Webhook)
| Env-Variable | Default | Beschreibung |
|---|---|---|
HTTP_MESSAGEBUS_IN_ENABLED | false | Boolean, optional. Inbound-Routes aktivieren |
HTTP_MESSAGEBUS_IN_BASE_PATH | /messagebus | String, optional. Basis-Pfad der Inbound-Routes |
HTTP_MESSAGEBUS_IN_AUTH_HEADER | — | String, optional. Header-Name für die Authentifizierung |
HTTP_MESSAGEBUS_IN_AUTH_SECRET | — | String, optional. Erwarteter Wert des Auth-Headers |
Verwendung
Outbound — Engine pusht Signale an einen Webhook:
HTTP_MESSAGEBUS_OUT_ENABLED=true
HTTP_MESSAGEBUS_OUT_ENDPOINT_URL=https://example.com/events/{signalName}
HTTP_MESSAGEBUS_OUT_HEADERS={"Authorization":"Bearer <token>"}
HTTP_MESSAGEBUS_OUT_RETRY_MAX=5Inbound — externe Systeme liefern Signale/Messages ein:
HTTP_MESSAGEBUS_IN_ENABLED=true
HTTP_MESSAGEBUS_IN_BASE_PATH=/webhooks
HTTP_MESSAGEBUS_IN_AUTH_HEADER=X-Auth-Token
HTTP_MESSAGEBUS_IN_AUTH_SECRET=<secret>Routes: POST /webhooks/signals/:name und POST /webhooks/messages/:name.
Outbound und Inbound sind unabhängig — du kannst nur Push, nur Webhook oder beides aktivieren.