Dieser Service empfängt eine AS4 Nachricht vom Crypto Operations via Message Broker und versendet diese an den Marktpartner. Diese versendete Nachricht wird zur Persistierung an den AS4 Message Service via Message Broker geschickt. Und auch die empfangene Bestätigung des Marktpartners wird zur Verifizierung an den Crypto Operations versendet.
Hardware Anforderungen
Eine Service-Instanz erfordert mindestens 512 MB RAM.
Wir empfehlen 0,4 CPU-Kerne je Instanz.
Logs werden auf die Festplatte geschrieben, entsprechend muss genügend Speicherplatz vorhanden sein.
Abhängigkeiten
Der Service greift auf einen Message-Broker zu, um Nachrichten zu empfangen und zu versenden.
Der Service nutzt die REST API des Security Server FSS. Der FSS muss im Hintergrund auf ein HSM zugreifen können.
Der Service verbindet sich per AS4 mit anderen AS4 Endpunkten.
Einfache Konfiguration der as4-outbound-sender.properties
Der AS4 Outbound Sender versendet die Edifact Nachricht als AS4 Nachricht an den Marktpartner. Anschließend wird diese AS4 Nachricht als Business Message an den AS4 Message Service und die erhaltene Bestätigung als Receipt an den Crypto Operations übergeben.
Dazu benötigt der AS4 Outbound Sender die Angaben zum Message-Broker.
rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=guest
Mit skipCrypt lässt sich die Anbindung zum Crypt Operation für Entwicklungszwecke ausschalten.
skipCrypt=false
AMQP Konfiguration
Falls Sie das Standard Routing nutzen, muss das Routing nicht weiter konfiguriert werden. Wenn Sie Ihr Routing anpassen möchten, lesen Sie die folgende Dokumentation.
Die Property consumer.max.attempts verhindert das mehrfache Versenden der Nachricht, wenn die Versendung fehlgeschlagen oder ein anderer Fehler aufgetreten ist.
consumer.max.attempts=1
Empfang der AS4 Nachricht
Der Consumer empfängt die signierte AS4 Nachricht über die Queue as4.outbound.default.
cryptoConsumerExchangeName=as4.outbound
Versendung der Business Message
Der Producer versendet die AS4 Nachricht (in diesem Kontext die Business Message) über die Queue as4.messages.default.
businessMessageExchangeName=as4.messages
Weiterleiten der Empfangsbestätitung
Der Producer versendet die Empfangsbestätigung des Marktpartners an den Crypto Operations über die Queue as4.verify.default.
receiptCryptoExchangeName=as4.verify
Crypto Errors
Im Fall das Crypto Operations ausgeschaltet wird, die Signaturprüfung der Quittung gescheitert ist und es sich nicht um eine signierte Pathswitch Nachricht handelt, landet die zu versendete Nachricht in der Queue as4.messages.default. Es wird ein dazugehöriges, “leeres” Receipt mit entsprechendem Report in die Queue as4.receipt.default gelegt. Die Objekte werden im As4-Message-Service konsumiert und persistiert, sodass sie im MessageMonitor einsehbar sind.
receiptExchangeName=as4.receipt
businessMessageExchangeName=as4.messages
Routing Konfiguration der as4-outbound-sender.properties
Für die Aktivierung des Routings müssen der headerName und die headerValues gesetzt werden. Den headerName kann man sich als Filterkategorie vorstellen, während die headerValues den zu filternden Werten entsprechen. Nachrichten mit Werten, die nicht explizit als headerValues aufgelistet sind, laufen weiterhin über die default Route.
Als headerName werden folgende Parameter angeboten:
- tenant: ILN Nummer des Senders
- partner: ILN Nummer des Empfängers.
- sector: GAS, ELECTRICITY
Es können mehrere Werte kommasepariert angegeben werden.
receiptCryptoExchangeName=as4.verify
receiptCryptoHeaderName=tenant
receiptCryptoHeaderValues=
businessMessageExchangeName=as4.messages
businessMessageHeaderName=tenant
businessMessageHeaderValues=
receiptExchangeName=as4.receipt
receiptHeaderName=tenant
receiptHeaderValues=
Wird der Producer für das Routing konfiguriert muss natürlich auch die Gegenstelle dafür eingerichtet werden. Dem Consumer wird über die Gruppe der Wert (Value) aus der HeaderValues Liste zugewiesen nach welchem gefiltert werden soll. Bitte den Default Wert nur ändern, wenn Routing verwendet werden soll.
cryptoConsumerExchangeName=as4.outbound
cryptoConsumerGroup=default
Mit der Variable consumer.max.attempts wird verhindert, dass die Nachricht versendet wird, wenn die Verarbeitung fehlschlägt.
consumer.max.attempts=1
REST API
Die API bietet Server-Health Informationen an.
Der Port lässt sich über folgende Property konfigurieren: server.port=8080
Anhang: Gesamtkonfiguration
Folgende Konfiguration reicht in einem Standard-System mit TLS aus: application.properties
:
rabbitmq.host=rabbitmq3
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=${RABBITMQ_PASSWORD}
# Timeout default to 300 second
connectionTimeout=300
#=== FSS ===#
fss.server.api.url=http://fss:2222/fss/api/v1
#=== SSL Properties ===#
client.ssl.enabled=true
ssl.tenant.iln=9907647000008
ssl.client=9907647000008
ssl.partner.client=shared-client
Allgemeine Hinweise zur Konfiguration finden Sie hier.
View Me Edit Me