Skip to content
Snippets Groups Projects
Select Git revision
  • dec47e96ce7bef6bd729be6493b644aae104462d
  • main default protected
  • OZG-6319-display-preparation-request
  • release
  • 1.0.0
5 results

fachstellen-proxy

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    OZGCloud authored
    dec47e96
    History

    Fachstellen-Proxy

    Der Fachstellen-Proxy nimmt HTTP Requests von der Fachstelle entgegen, mappt diese auf gRPC und leitet sie an den Zufi- (Fachstellenregistrierung) bzw. Collaboration-Manager (Fachstellenbeteiligung) weiter. Zum Protokollmapping von HTTP auf gRPC wird die Bibliothek gRPC-Gateway verwendet. Dadurch können die HTTP-Endpunkte inkl. des Mappings größtenteils automatisch aus proto-Dateien generiert werden.

    Requests zur Fachstellenregistrierung werden an die unter config.grpc.registration.server.url eingetragene URL (bzw. localhost:50052, wenn config.grpc.mock = true) weitergeleitet.

    Requests zur Fachstellenbeteiligung (z.B. FindVorgang) werden zunächst an den CollaborationRouter weitergeleitet. Das ist ein Proxy-eigener gRPC-Server, der auf localhost und dem unter config.grpc.collaboration.router.port eingetragenen Port läuft. Dort wird die Adresse des Ziel-Collaboration-Managers aus dem Requestpayload (z.B. aus der VorgangId) extrahiert. Der Port des Ziel-Collaboration-Managers ist konstant und wird unter config.grpc.collaboration.server.port festgelegt (bzw. auf 50052 gesetzt, wenn config.grpc.mock = true). Anschließend leitet der CollaborationRouter die gRPC Request an die URL weiter, die aus der extrahierten Adresse und dem Port zusammengesetzt wird.

    Getting Started

    Dependencies installieren

    go mod download
    go install \
        github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
        github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
        google.golang.org/protobuf/cmd/protoc-gen-go \
        google.golang.org/grpc/cmd/protoc-gen-go-grpc

    Buf installieren

    https://github.com/bufbuild/buf?tab=readme-ov-file

    Proto Dateien anpassen

    Die *.proto Dateien, die die verwendetetn GRPC Apis des Proxys definieren müssen aus den entsprechenden Projekten in das Verzeichnis api/proto kopiert werden.

    Die Projekte sind:

    Damit die Code generierung funktioniert müssen die proto-Dateien aktuell noch angepasst werden. Dazu muss in jede Datei die Zeile option go_package = "de.ozgcloud.fachstellenproxy"; hinzugefügt werden, damit die erzeugten Quellcode-Dateien im selben go package liegen.

    Generierung konfigurieren

    Die Generierung des Gateways kann mit den Dateien

    • api/gateway-config.yml - go Code für den Gateway
    • api/openapi-config.yml - für die Erzeugung der swagger json Dateien

    konfiguriert werden.

    Protobuf-Code und swagger datei generieren

    buf generate

    Erzeugt dann den Code für das Gateway und auch die Datei gen/openapiv2/fachstelleregistration.swagger.json. Diese Datei kann dann in anderen Projekten verwendet werden um die nötige DTO Klassen zu erzeugen.

    Anwendung starten

    ACTIVE_PROFILE=local go run cmd/fachstellen-proxy/main.go

    Config

    config.yml is the default config for deployment

    Config-Datei

    config-local.yml is the config file for local development setting ACTIVE_PROFILE=local will load the config-local.yml

    Config-Datei

    http:
      server:
        port: Port des HTTP Gateways (int)
    grpc:
      mock: gRPC Registration und Collaboration Server mocken (bool)
      collaboration:
        server:
          port: Port des gRPC Collaboration Servers (int)
        router: 
          port: Port des gRPC Collaboration Routers (int)
      registration:
        server:
          url: URL des gRPC Registration Servers im host:port Format (string)
    logging:
      level: "ERROR" | "WARN" | "INFO" | "DEBUG"