Beschreibung
Der Service bietet die folgende integrative Funktion zwischen B2B, AS4-Modul und MK-Gateway (kurz: MKG) beim Versand von Marktnachrichten über die B2B:
Wird eine Nachricht vom MKG über die B2B in den Markt gesendet, so wird der Status des Versands der Nachricht samt Meta-Informationen per REST an das MKG zurückgemeldet.
Die B2B entscheidet anhand dabei ihrer Marktpartner-Daten, ob der marktkonforme Versand der Nachricht per Mail, AS2 oder AS4 stattfindet.
Im Falle eines Mail oder AS2 Versands wird der Service MKG-Versandstatus-Rückmeldung-Service am Ende der Nachrichten-Verarbeitung getriggert. Technisch genauer: Per RESTClientService wird der Nachrichten-Trigger Endpunkt des b2b-message-services angesprochen, welcher als AMQP Adapter dient und die Nachricht in eine Queue schreibt. Der MKG-Versandstatus-Rückmeldung-Service sammelt die dann die benötigten Informationen zum Nachrichtenversand aus der B2B zusammen, bringt sie in das gewünschte Format und meldet sie an das MKG zurück.
Im Fall eines AS4 Versands wird der MKG-Versandstatus-Rückmeldung-Service per Message-Broker Exchange-Konfiguration direkt aus dem AS4 Modul heraus getriggert. Genauer geschieht dies dann, wenn der as4-message-service die versendete AS4 Nachricht und Receipt in der B2B speichern möchte.
An das MKG werden neben dem Status (erfolgreich/nicht erfolgreich) zum Versand der Nachricht im Markt noch weitere Zusatzinforamtionen zurückgemeldet, wie
- das Protokoll (Mail, AS2, AS4)
- der Zeitpunkt des Versands (im Erfolgsfall)
- die B2B Nachrichten-ID (zur eindeutigen Zuordnung zur Nachricht)
- der verwendete Endpunkt im Markt (AS4- oder AS2-URL bzw. Mailaddresse im Erfolgsfall)
- ein Fehlertext (im Fehlerfall)
Installation
Der Service wird als Docker Image und Helm Chart (kostenpflichtig/bei entsprechender Berechtigung) bereitgestellt.
Entsprechende Helm Charts oder Docker Compose Umgebungen können bei Bedarf angefordert und bereitgestellt werden.
Konfiguration
Der Service wird über die folgenden Umgebungsvariablen aus der application.yml konfiguriert.
Dabei müssen im Wesentlichen die technischen Schnittstellen konfiguriert werden:
- die RabbitMQ Verbindung
- die B2B (abgesichert via OAuth2 mit angelegter Keycloak Client Konfiguration)
- das MKG (abgesichert via Basic Auth)
spring:
# RabbitMQ
cloud:
function:
definition: consumeSentMessageEvent
stream:
bindings:
consumeSentMessageEvent-in-0.destination: ${messaging.sentMessageExchangeName}
consumeSentMessageEvent-in-0.group: ${messaging.sentMessageConsumerGroup}
consumeSentMessageEvent-in-0.consumer.max-attempts: ${messaging.consumerMaxAttempts}
rabbit:
bindings:
consumeSentMessageEvent-in-0.consumer.exchange-type: topic
consumeSentMessageEvent-in-0.consumer.quorum.enabled: true
consumeSentMessageEvent-in-0.consumer.auto-bind-dlq: true
consumeSentMessageEvent-in-0.consumer.dlq-quorum.enabled: true
rabbitmq:
host: rabbit-host
port: 5672
username: rabbitmqUser
password: rabbitmqPassword
# Keycloak client
security:
oauth2:
client:
provider:
keycloak:
issuer-uri: http://keycloak-server:8080/auth/realms/pks
registration:
keycloak:
provider: keycloak
client-id: mkg-shipping-status-sender
client-secret: meinClientSecret
authorization-grant-type: client_credentials
resourceserver:
jwt:
issuer-uri: http://keycloak-server:8080/auth/realms/pks
# RabbitMQ messaging default configurations
messaging:
sentMessageExchangeName: b2b.message.reference
sentMessageConsumerGroup: default
consumerMaxAttempts: 1
b2b:
url: http://b2b-server:8080
mkg:
url: http://mkg-server:8080
username: admin
password: 123456
server:
servlet:
contextPath: /mkg-shipping-status-sender