Features & Nutzung
Der AEP api-webservice-client
- empfängt Daten für eine API-Anfrage vom Mako-System,
- ermittelt den Ziel API-Endpunkt des Marktpartners,
- erstellt und signiert die API-Anfrage,
- übermittelt die API-Anfrage mTLS verschlüsselt dem Marktpartner,
- empfängt die Antwort des Marktpartners und
- leitet diese an das Mako-System weiter.
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.
Dieser Dienst stellt auch eine Verbindung zu anderen Diensten wie dem aep-api-address-service her, um die URL von Marktpartnern abzurufen.
Erforderliche Konfiguration für aep-api-webservice-client.properties
Legen Sie die URL für den FSS-Dienst und den API-Adressdienst fest
fss-url=http://fss:2223/fss/api/v1/
address-server-url=http://api-address-service:8080/aep-api-address-service
Sie können den Status der Address-Einträge mit dieser Eigenschaft konfigurieren.
Mögliche Werte sind OFFLINE, TEST, MAINTENANCE und ONLINE.
Wenn nichts ausgewählt wurde, werden Einträge mit den Werten OFFLINE, MAINTENANCE und ONLINE zurückgegeben.
address-service.status=
Message-Broker einrichten
rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=guest
Sie können sich auch für den Service-Bus von Azure entscheiden, dafür brauchen Sie eine vorhandene Infrastruktur. Um Service-bus zu aktivieren müssen Sie folgende Eigenschaften setzen:
spring.profiles.active=servicebus
spring.cloud.azure.servicebus.connection-string=<Your-Connection-String>
spring.cloud.azure.servicebus.namespace=<Your-Namespace>
Optionale Konfiguration aep-api-webservice-client.properties
Wenn Ihr FSS- und Adressdienst im sicheren Modus (geschützt durch Authentifizierung) ausgeführt wird, können Sie den Client so konfigurieren, dass er im API-Aufruf Token sendet. Konfigurieren Sie die folgenden Eigenschaften, um die Authentifizierungseigenschaften zu aktivieren und einzurichten.
Hinweis: Konfigurieren Sie in Keycloak einen neuen Client mit dem Namen api-service und aktivieren Sie Client Authentication.
address-service.secured-rest-client=false
fss.secured-rest-client=false
client.issuer-uri=https://<domain>/auth/realms/<realm>/protocol/openid-connect/token
client.id=api-service
client.client-secret=*****
client.scope=openid
client.user-name=
client.password=
Über diese Eigenschaft können Sie das Verbindungszeitlimit für Anrufe zu anderen Diensten wie FSS und Adressdienst ändern:
web-client.connection-timeout-millis=10000
Ändern Sie die Protokollierungsebene auf Root-Ebene. Der Standardwert ist INFO.
logging.level.root=INFO
Sie können die Protokollierungsstufe auch auf Paketebene ändern, indem Sie die folgende Eigenschaft verwenden
logging.level.aep.api.webservice.client=DEBUG
Die Signierung kann mit der folgenden Eigenschaft aktiviert oder deaktiviert werden. Der Standardwert für diese Eigenschaft ist true.
sign-enabled=true
Die verschlüsselte Verbindung mit mTLS zwischen Client und Server ist standardmäßig aktiviert und kann mit dieser Eigenschaft deaktiviert werden.
tls-enabled=false
AMQP Konfiguration
Die folgende Konfiguration legt Wiederholungsversuche in der Warteschlange fest. Der Standardwert ist auf 3 eingestellt.
consumerMaxAttempts=3
Die folgende Konfiguration besteht darin, die Austauschnamen und die maximale Parallelität für jede Warteschlange festzulegen. Nachfolgend finden Sie alle Standardwerte.
#----------------------------------Address Queue Config--------------------------------------------
addressRequestExchangeName=b2b.outbox
addressRequestQueueName=api.request.address
spring.cloud.stream.bindings.addressRequestConsumer-in-0.group=default
spring.cloud.stream.rabbit.bindings.addressRequestConsumer-in-0.consumer.max-concurrency=50
#----------------------------------Sign queue config----------------------------------------
signRequestExchangeName=api.request.sign
spring.cloud.stream.bindings.signRequestConsumer-in-0.group=default
spring.cloud.stream.rabbit.bindings.signRequestConsumer-in-0.consumer.max-concurrency=50
#-----------------------------------Send queue config-------------------------------------------
sendRequestExchangeName=api.request.send
spring.cloud.stream.bindings.sendRequestConsumer-in-0.group=default
spring.cloud.stream.rabbit.bindings.sendRequestConsumer-in-0.consumer.max-concurrency=50
#-----------------------------------Response queue config-------------------------------------------
clientResponseExchangeName=api.client.response