Dieser Service nimmt eine Edifact-Nachricht an.
Die AS4-Nachricht wird erstellt und an den Message-Broker weitergeleitet.
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 greift auf die REST-API des AS4 Address Service zu.
Einfache Konfiguration der as4-outbound-market-message-service.properties
Anbindung AS4-Address-Service REST API
Der AS4 Outbound Market Message Service benötigt die Adresse des Marktpartners, der Empfänger der Edifact Nachricht ist. Diese erhält er vom AS4 Address Service. Um diesen Service ansprechen zu können, ist die Adresse addressServerUrl notwendig.
addressServerUrl=http://localhost:8085/aep-as4-address-service/as4-address
Existiert zum Beispiel aus Testgründen kein AS4 Address Service oder sind noch keine Adressen vorhanden, dann lässt sich die Abfrage mit useFeign=false deaktivieren und mit as4.address.send ein Dummy Wert setzen.
useFeign=false
as4.address.send=http://localhost:8083/aep-as4-inbound-endpoint/as4
Anbindung Message-Broker
Außerdem benötigt der AS4 Outbound Market Service die Angaben zum Message-Broker.
rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=guest
AMQP Routing 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 Edifact Nachricht wir an den Crypto Operations weitergeleitet. Der vollständige Name ohne Routing lautet as4.encrypt.sign.default.
cryptoEncryptAndSignExchangeName=as4.encrypt.sign
Routing Konfiguration der as4-outbound-market-message-service.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.
cryptoEncryptAndSignExchangeName=as4.encrypt.sign
cryptoEncryptAndSignHeaderName=tenant
cryptoEncryptAndSignHeaderValues=
Der Pathswitch ist die Möglichkeit eine neue Internet Adresse des Tenants dem Marktpartner bekannt zu geben. Dieser Prozess wird vom AS4 Address Service aus gestartet.
pathswitchConsumerExchangeName=as4.outbound.request.pathswitch
pathswitchConsumerGroup=default
consumer.max.attempts=1
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.
Mit der Variable consumer.max.attempts wird verhindert, dass die Nachricht nochmal versendet wird, wenn die Verarbeitung fehlschlägt.
Max Concurrency - Parallelität
Für jeden Consumer ist es möglich die Eigenschaft max-concurrency
zu setzen. Diese definiert die maximale Anzahl von gleichzeitigen Verarbeitungsthreads, die für einen Consumer gestartet werden können. Der Default steht für jeden Consumer auf 50.
pathswitchConsumerMaxConcurrency=50
outboundRequestConsumerMaxConcurrency=50
Verify AMQP Tenant Header
Mit dieser Eigenschaft kann eine Prüfung beim Konsumieren des AMQP-Events aktiviert werden. Es wird überprüft, ob die Tenant-MPID aus dem Payload mit dem Tenant aus dem Header des AMQP-Events übereinstimmen. Ist dies nicht der Fall, wird die Nachricht nicht verarbeitet und ein Fehler gelogged. Diese Funktion kann wie folgt aktiviert werden:
validateTenantHeader=true
REST API Dokumenation
Die API bietet Server-Health Informationen an.
Die Beschreibung der REST API lässt sich, im Fall einer Docker Installation, unter http://host.docker.internal:8081/aep-as4-outbound-market-message-service/swagger-ui/index.html#
oder unter http://localhost:8080/aep-as4-outbound-market-message-service/swagger-ui/index.html#/
finden.
Der Port kann über folgende Property konfiguriert werden: server.port=8080
.
REST API zur Entgegennahme von Edifact Nachrichten (deprecated)
Diese REST API soll nicht mehr genutzt werden, stattdessen sind Nachrichten per AMQP zu übermitteln.
Anhang: Gesamtkonfiguration
Folgende Konfiguration reicht in einem Standard-System aus: application.properties
:
#=== REST Call To Other Services ===#
addressServerUrl=http://as4-address-service:8080/aep-as4-address-service/as4-address
#=== RabbitMQ Connection Configuration ===#
rabbitmq.host=rabbitmq3
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=${RABBITMQ_PASSWORD}
Allgemeine Hinweise zur Konfiguration finden Sie hier.
View Me Edit Me