1. Konfigurationsdatei

Die Konfiguration der Anwendung erfolgt über die Datei config/application.yml im Installationsverzeichnis.

Ein Beispieldatei liegt der Anwendung immer unter dem Pfad config/application.yml.example bei. Benennen Sie diese Datei vor dem ersten Start der Anwendung entsprechend um oder prüfen Sie bei Upgrades, ob es Änderungen gibt.

2. Allgemein

Die Anwendung basiert auf dem Spring-Boot-Framework und einem integrierten Tomcat. Das bringt schon eine Vielzahl an Konfigurationsmöglichkeiten mit sich.

Eine Liste der Konfigurationparamter finden Sie hier: Common Application Properties

Die folgende Tabelle enthält nennenswerte Parameter, die ggf. auch mit neuen Standardwerten versehen wurden:

Name Beschreibung Standardwert

server.address

Die IP-Adresse, von der aus auf die Anwendung zugegrifen werden darf. Durch Setzen des Wertes 0.0.0.0 werden alle IP-Adressen erlaubt.

127.0.0.1

server.port

Der HTTP-Port unter dem die Anwendung erreichbar ist.

8080

spring.servlet.multipart.location

Gibt das Verzeichnis an, in dem hochgeladene Dateien gespeichert werden. Wenn nicht angegeben, wird ein temporäres Verzeichnis verwendet.

Temporäres Verzeichnis

spring.servlet.multipart.max-file-size

Gibt die maximal zulässige Größe für hochgeladene Dateien an.

1MB

spring.servlet.multipart.max-request-size

Gibt die maximal zulässige Größe für multipart/form-data-Requests an.

10MB

spring.servlet.multipart.file-size-threshold

Gibt den Größenschwellenwert an, nach dessen Überschreitung Dateien auf die Festplatte geschrieben werden.

0

logging.level.ROOT

Setzt den übergeordneten Log-Level. Folgende Werte könenn gesetzt werden: TRACE, DEBUG, INFO, WARN, ERROR

WARN

logging.level.*

Setzt den Log-Level für ein bestimmtes Java-Package. Anstelle des * erfolgt die Angabe des Packages. Folgende Werte könenn gesetzt werden: TRACE, DEBUG, INFO, WARN, ERROR

WARN

logging.file.name

Der Name der Log-Datei. Bei Angabe eines relativen Pfades bezieht sich dieser auf das Installationsverzeichnis.

log/fva-simulation-hub.log

Beispiel:

server:
  address: 0.0.0.0
  port: 5000

spring:
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB

logging:
  level:
    ROOT: WARN
    '[de.fva.simulationhub.service]': WARN
  file:
    name: log/fva-simulation-hub.log
Bei Anpassung der maximal zulässigen Größe für das Hochladen von Dateien und Requests muss auch die zugehörige Einstellung im Reverse Proxy geändert werden.

3. Tasks

3.1. Allgemein

Mit den folgenden Parametern werden allgemeine Einstellungen für Tasks festgelegt.

Name Beschreibung Standardwert

app.task.defaultWorkbenchVersion

Die Version der FVA-Workbench, die verwendet werden soll, falls keine in der Anfrage angegeben wurde.

app.task.dataDirectory

Verzeichnis in dem alle Daten zu den bearbeiteten Tasks zwischengespeichert werden. Bei Angabe eines relativen Pfades bezieht sich dieser auf das Installationsverzeichnis.

data/tasks

app.task.deleteTaskDataAfterFinish

Mit diesem Parameter wird festgelegt, ob die zwischengespeicherten Dateien zum Task nach dessen Bearbeitung gelöscht werden. Durch den Wert false werden die Dateien nicht gelöscht, was aber die Festplatte immer weiter füllt.

true

Beispiel:

app:
  task:
    defaultWorkbenchVersion: 7.1.0
    dataDirectory: data/tasks
    deleteTaskDataAfterFinish: true

3.2. Zeitpläne

Mit den folgenden Parametern können Zeitpläne für Tasks konfiguriert werden.

Name Beschreibung Standardwert

app.task.schedules[0].schedule

Ein CRON-Ausdruck zur Ausführung der Aktion (siehe CRON).

-

app.task.schedules[0].filters

Verschiedene Kirterien zur Einschränkung der Tasks, für die die festgelegte Aktion ausgeführt werden soll.

app.task.schedules[0].filters.status[0]

Filtert nach dem Status des Tasks. Folgende Werte sind möglich:

  • WAITING: Der Task befindet sich in der Warteschlange und wird noch nicht ausgeführt.

  • SCHEDULED: Die Aufgabe wurde aus der Warteschlange entfernt und ist zur Ausführung geplant.

  • RUNNING: Der Task wird gerade ausgeführt.

  • CANCELED: Die Ausführung des Tasks wurde abgebrochen.

  • FINISHED: Die Ausführung des Tasks wurde beendet.

  • FAILED: Die Ausführung des Tasks wurde unerwartet beendet.

app.task.schedules[0].filters.priority[0]

Filtert nach der Priorität des Tasks. Folgende Werte sind möglich (Reihenfolge von der höchsten zur niedrigsten Priorität): HIGHEST, HIGH, NORMAL, LOW, LOWEST.

app.task.schedules[0].filters.requestedDatetime.olderThan

Filtert nach dem Zeitpunkt zu dem ein Request eingegangen ist.

app.task.schedules[0].filters.requestedDatetime.olderThanTimeUnit

Die Zeiteinheit für den Filter nach dem Zeitpunkt zu dem ein Request eingegangen ist (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

MINUTES

app.task.schedules[0].filters.startedDatetime.olderThan

Filtert nach dem Zeitpunkt zu dem mit der Ausführung des Tasks begonnen wurde.

app.task.schedules[0].filters.startedDatetime.olderThanTimeUnit

Die Zeiteinheit für den Filter nach dem Zeitpunkt zu dem mit der Ausführung des Tasks begonnen wurde (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

MINUTES

app.task.schedules[0].filters.endedDatetime.olderThan

Filtert nach dem Zeitpunkt zu dem die Ausführung des Tasks beendet wurde.

app.task.schedules[0].filters.endedDatetime.olderThanTimeUnit

Die Zeiteinheit für den Filter nach dem Zeitpunkt zu dem die Ausführung des Tasks beendet wurde (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

MINUTES

app.task.schedules[0].action

Die mit dem Zeitplan auszuführende Aktion.

  • cancel: Die Tasks werden abgebrochen.

  • delete: Die Tasks werden gelöscht.

Beispiel:

app:
  task:
    schedules:
      -
        schedule: '0 0 * * * *' # every hour
        filters:
          status:
            - WAITING
          priority:
            - LOWEST
          requestedDatetime:
            olderThan: 5
            olderThanTimeUnit: HOURS
        action: cancel

4. FVA-Workbench-Instanzen

4.1. Allgemein

Mit den folgenden Parametern werden allgemeine Einstellungen für FVA-Workbench-Instanzen festgelegt.

Name Beschreibung Standardwert

app.workbench.dataDirectory

Verzeichnis in dem alle notwendigen Daten zur Ausführung der FVA-Workbench-Instanzen gespeichert werden. Bei Angabe eines relativen Pfades bezieht sich dieser auf das Installationsverzeichnis.

data/workbench

app.workbench.deleteWorkbenchLogOnStart

Mit diesem Parameter wird festgelegt, ob die Log-Dateien der FVA-Workbench-Instanzen beim Start eines neuen Prozesses gelöscht werden. Durch den Wert false werden die Log-Dateien mit Zeitstempel und der Dateiendung .bak abgelegt, was aber die Festplatte immer weiter füllt.

true

Beispiel:

app:
  workbench:
    dataDirectory: data/workbench
    deleteWorkbenchLogOnStart: true

4.2. Standard-Lizenz

Mit den folgenden Parametern werden Lizenz-Einstellungen festgelegt, die für jede FVA-Workbench-Instanz gelten, zu der keine eigenen Lizenz konfiguriert wurde.

Name Beschreibung Standardwert

app.workbench.defaultLicense.serverUrl

Die URL zum FVA-Lizenzserver, in dem die benötigten Lizenzen hinterlegt sind.

app.workbench.defaultLicense.licenseId

Die Lizenz-ID der zu verwendenden Lizenz.

app.workbench.defaultLicense.login

Der Benutzername zur Verwendung der Lizenz. Die Angabe ist nur erforderlich, wenn im FVA-Lizenzserver Benutzername und Kennwort festgelegt wurden.

app.workbench.defaultLicense.password

Das Kennwort zur Verwendung der Lizenz. Die Angabe ist nur erforderlich, wenn im FVA-Lizenzserver Benutzername und Kennwort festgelegt wurden.

Beispiel:

app:
  workbench:
    defaultLicense:
      serverUrl: license.example.de:5006
      licenseId: Li13270
      login: fvagmbh
      password: geheim

4.3. Standard-Zeitpläne

Mit den folgenden Parametern können Zeitpläne konfiguriert werden, die für jede FVA-Workbench-Instanz gelten, zu der keine eigenen Zeitpläne konfiguriert wurden.

Name Beschreibung Standardwert

app.workbench.defaultSchedules[0].schedule

Ein CRON-Ausdruck zur Ausführung der Aktion (siehe CRON).

-

app.workbench.defaultSchedules[0].action

Die auszuführende Aktion.

  • start: Die Instanz wird gestartet.

  • stop: Die Instanz wird beendet.

  • restart: Die Instanz wird neugestartet.

Beispiel:

app:
  workbench:
    defaultSchedules:
      -
        schedule: '0 0 6 * * *' # 6:00 every day
        action: stop
      -
        schedule: '0 0 19 * * *' # 19:00 every day
        action: start

4.4. Instanzen

Mit den folgenden Parametern werden die FVA-Workbench-Instanzen konfiguriert, die zur Bearbeitung von Aufgaben verwendet werden können.

Werden die Portable-Varianten der FVA-Workbench verwendet, muss zwingend die "Microsoft Visual C++ Redistributable" installiert werden. Die zugehörige .exe-Datei befindet sich für gewöhnlich im Hauptverzeichnis der Protable-Version (Dateiname z. B. vc2017redist_x64.exe).

Zu jeder Instanz kann eine Lizenz konfiguriert werden. Werden diese Parameter für die Lizenz leer gelassen, dann wird die Standard-Lizenz verwendet.

Name Beschreibung Standardwert

app.workbench.instances[0].id

Vordefinierte ID für diese Workbench-Instanz. Wird kein Wert angegeben, dann wird die ID automatisch generiert.

Erlaubte Zeichen sind Zahlen, Buchstaben, Bindestriche (-) und Unterstriche (_). Maximal sind 64 Zeichen erlaubt.

Sollte der Parameter app.workbench.instances[0].replicas größer als 1 sein, dann wird die vordefinierte ID automatisch um einen Zähler erweitert (z. B.: foobar-1 bei vordefinierter ID foobar).

Automatisch generiert

app.workbench.instances[0].workbenchDirectory

Der Pfad unter dem sich die FVA-Workbench-Instanz befindet.

Das gewählte Verzeichnis muss sich auf dem Rechner befinden, auf dem auch der FVA Simulation Hub ausgeführt wird.

app.workbench.instances[0].additionalConfigDirectory

Der Pfad unter dem sich Konfigurationsdateien für die FVA-Workbench-Instanz befinden.

Vor dem Start der FVA-Workbench-Instanz wird der Inhalt des Verzeichnisses in das mit app.workbench.instances[0].workbenchDirectory angegebene Verzeichnis kopiert.

app.workbench.instances[0].license.serverUrl

Die URL zum FVA-Lizenzserver, in dem die benötigten Lizenzen hinterlegt sind.

app.workbench.instances[0].license.licenseId

Die Lizenz-ID der zu verwendenden Lizenz.

app.workbench.instances[0].license.login

Der Benutzername zur Verwendung der Lizenz. Die Angabe ist nur erforderlich, wenn im FVA-Lizenzserver Benutzername und Kennwort festgelegt wurden.

app.workbench.instances[0].license.password

Das Kennwort zur Verwendung der Lizenz. Die Angabe ist nur erforderlich, wenn im FVA-Lizenzserver Benutzername und Kennwort festgelegt wurden.

app.workbench.instances[0].schedules[0].schedule

Ein CRON-Ausdruck zur Ausführung der Aktion (siehe CRON).

-

app.workbench.instances[0].schedules[0].action

Die mit dem Zeitplan auszuführende Aktion.

  • start: Die Instanz wird gestartet.

  • stop: Die Instanz wird beendet.

  • restart: Die Instanz wird neugestartet.

app.workbench.instances[0].labels[0]

Eine Liste an frei definierbaren Labels, die für Einschränkungen bei der Authorisierung und ein Anfragen verwendet werden können.

app.workbench.instances[0].initialStatus

Legt den gewünschten Ausgangsstatus der FVA-Workbench-Instanz fest.

  • up: Die Instanz läuft und steht für die Bearbeitung von Tasks zur Verfügung.

  • down: Die Instanz läuft gerade nicht.

up

app.workbench.instances[0].restartPolicy

Definiert die Richtlinie, die beim Beenden der FVA-Workbench-Instanz angewendet wird.

  • no: Startet eine Instanz unter keinen Umständen neu.

  • always: Die Richtlinie startet die Instanz immer neu.

  • on-failure: Die Richtlinie startet eine Instanz nur dann neu, wenn sie abgestürzt ist.

no

app.workbench.instances[0].replicas

Definiert die Anzahl der Prozesse, die gestartet werden sollen. Unterstützt wird hierfür nur die FVA-Workbench ab Version 9.0.0. Für alle Versionen davor wird der Wert ignoriert.

1

Beispiel:

app:
  workbench:
    instances:
      -
        workbenchDirectory: C:\\FVA-Simulation-Hub\\worker\\FVA-Workbench-7.1_01
        license:
          serverUrl: license.example.de:5006
          licenseId: Li13270
          login: fvagmbh
          password: geheim
      -
        workbenchDirectory: C:\\FVA-Simulation-Hub\\worker\\FVA-Workbench-7.1_02
        restartPolicy: always
      -
        workbenchDirectory: C:\\FVA-Simulation-Hub\\worker\\FVA-Workbench-9.0.0
        schedules:
          -
            schedule: '0 0 3 * * *' # 3:00 every day
            action: restart
        labels:
          - foo
          - bar
        initialStatus: down
        replicas: 3

5. Sicherheit

5.1. REST-API

Die folgneden Parameter steuern grundlegende Einstellungen zu Sicherheit der REST-API.

Name Beschreibung Standardwert

app.security.api.enable

Mit diesem Parameter wird festgelegt, ob die REST-API mit einem Authentifizierungsverfahren geschützt wird. Durch den Wert false wird das Authentifizierungsverfahren deaktiviert.

true

app.security.accessToken.secret

Der geheime Schlüssel zu Ver- und Entschlüsseln des Authentifizierungs-Token.

Beim Load Balancing sollte dieser Wert über alle Instanzen identisch sein, damit keine erneute Authorisierung durchgeführt werden muss.

app.security.accessToken.expiration

Die Gültigkeit eines neu erstellten Authentifizierungs-Token.

10

app.security.accessToken.expirationTimeUnit

Die Zeiteinheit für die Gültigkeit eines neu erstellten Authentifizierungs-Token (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

MINUTES

app.security.refreshToken.secret

Der geheime Schlüssel zu Ver- und Entschlüsseln des Authentifizierungs-Refresh-Token.

Beim Load Balancing sollte dieser Wert über alle Instanzen identisch sein, damit keine erneute Authorisierung durchgeführt werden muss.

app.security.refreshToken.expiration

Die Gültigkeit eines neu erstellten Authentifizierungs-Refresh-Token.

4

app.security.refreshToken.expirationTimeUnit

Die Zeiteinheit für die Gültigkeit eines neu erstellten Authentifizierungs-Refresh-Token (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

DAYS

Beispiel:

app:
  security:
    api:
      enable: true
      accessToken:
        secret: ed51f4bcc7b1eee109fce1524706ac16bd5d7ae3155abd7b152e8b7f
        expiration: 10
        expirationTimeUnit: MINUTES
      refreshToken:
        secret: 155abd7b152e8b7f013d2f2adb92ab768cfc7e87204ae1218f87204a
        expiration: 4
        expirationTimeUnit: DAYS

5.2. CORS

CORS (Cross-Origin Resource Sharing) ermöglicht die ursprungsübergreifende Ressourcenfreigabe von Webbrowsern.

Diese Parameter sind nur dann notwendig, wenn aus einem Webbrowser (z. B. mittels JavaScript) auf die REST-API zugegriffen werden soll.
Name Beschreibung Standardwert

app.security.cors.allow

Mit diesem Parameter wird festgelegt, ob CORS (Cross-Origin Resource Sharing) erlaubt wird.

false

app.security.cors.allowedOrigins

Eine Liste mit Domains, für die CORS (Cross-Origin Resource Sharing) akzeptiert werden. Angegeben werden müssen Schema, Domain und Port (nur bei Abweichung vom Standard), z. B. localhost:3000. Die Angabe von Wildcard-Symbolen wie * ist zulässig.

*

Beispiel:

app:
  security:
    cors:
      allow: true
      allowedOrigins:
        - 'http://localhost:3000'

5.3. Benutzer

Mit den folgenden Parametern werden die Benutzer konfiguriert, die sich authentifizieren können.

Name Beschreibung Standardwert

app.security.users[0].username

Der Benutzername des Benutzers.

app.security.users[0].password

Das Kennwort des Benutzers.

app.security.users[0].permittedClassifiers.versions[0]

Eine Liste mit Versionen der FVA-Workbench, die bei einer Anfrage verwendet werden dürfen.

app.security.users[0].permittedClassifiers.priorities[0]

Eine Liste mit Prioritäten, die bei einer Anfrage verwendet werden dürfen.

app.security.users[0].permittedClassifiers.labels[0]

Eine Liste mit Labels zu konfigurierten FVA-Workbench-Instanzen, die bei einer Anfrage verwendet werden dürfen.

app.security.users[0].permittedClassifiers.allVersionsPermitted

Setzen Sie den Wert des Parameters auf true, um alle FVA-Workbench-Versionen für den Benutzer freizuschalten.

false

app.security.users[0].permittedClassifiers.allPrioritiesPermitted

Setzen Sie den Wert des Parameters auf true, um alle Prioritäten für den Benutzer freizuschalten.

false

app.security.users[0].permittedClassifiers.allLabelsPermitted

Setzen Sie den Wert des Parameters auf true, um alle Labels für den Benutzer freizuschalten.

false

app.security.users[0].storagePermitted

Setzen Sie den Wert des Parameters auf true, um die Nutzung des Storage für den Benutzer freizuschalten.

false

Beispiel:

app:
  security:
    users:
      -
        username: user1
        password: password1
        permittedClassifiers:
          versions:
            - 7.1.0
          priorities:
            - NORMAL
            - LOW
            - LOWEST
          labels:
            - foo
      -
        username: user2
        password: password2
        permittedClassifiers:
          allVersionsPermitted: true
          allPrioritiesPermitted: true
          allLabelsPermitted: true
        storagePermitted: true

6. Storage

6.1. Input

Mit den folgenden Parametern wird der Input-Storage konfiguriert. Dieser Storage kann genutzt werden, um Dateiein hochzuladen, die dann in Requests referenziert werden können.

Name Beschreibung Standardwert

app.storage.input.enable

Mit diesem Parameter wird festgelegt, ob die Input-Storage-Endpunkte der REST-API aktiviert werden. Durch den Wert false wird der Storage deaktiviert.

false

app.storage.input.dataDirectory

Verzeichnis in dem alle Daten des Input-Storage gespeichert werden. Bei Angabe eines relativen Pfades bezieht sich dieser auf das Installationsverzeichnis.

data/storage/input

app.storage.input.encryptionPassword

Das Kennwort, mit dem Dateien verschlüsselt werden.

Dateien werden nur verschlüsselt, wenn dies beim Upload der Datei mit angegeben wurde.

Beim Ändern des Kennworts ist darauf zu achten, dass bereits verschlüsselt angelegte Dateien nicht mehr entschlüsselt werden können.

fe4edae37d5e

app.storage.input.fileExpiration

Der Zeitraum für den Dateien im Input-Storage aufbewahrt werden sollen.

7

app.storage.input.fileExpirationTimeUnit

Die Zeiteinheit für den Zeitraum für den Dateien im Input-Storage aufbewahrt werden sollen (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

DAYS

Beispiel:

app:
  storage:
    input:
      enable: true
      dataDirectory: data/storage/input
      encryptionPassword: fe4edae37d5e
      fileExpiration: 7
      fileExpirationTimeUnit: DAYS

6.2. Output

Mit den folgenden Parametern wird der Output-Storage konfiguriert. Dieser Storage kann genutzt werden, um Dateiein bereitzustellen, die während eines Tasks generiert wurden.

Durch verschiedene Regeln wird festgelegt, welche Dateien nach Beenden eines Task über den Storage bereitgestellt werden sollen.

Name Beschreibung Standardwert

app.storage.output.enable

Mit diesem Parameter wird festgelegt, ob die Output-Storage-Endpunkte der REST-API aktiviert werden. Durch den Wert false wird der Storage deaktiviert.

false

app.storage.output.dataDirectory

Verzeichnis in dem alle Daten des Output-Storage gespeichert werden. Bei Angabe eines relativen Pfades bezieht sich dieser auf das Installationsverzeichnis.

data/storage/output

app.storage.output.rules.filename.startsWith[0]

Eine Liste mit Werten, mit denen der Dateiname einer generierten Datei beginnen muss, um im Output-Storage abgelegt zu werden. Groß- und Kleinschreibung werden dabei nicht berücksichtigt. Sobald ein Wert zutrifft, wird die Datei im Storage hinterlegt.

app.storage.output.rules.filename.endsWith[0]

Eine Liste mit Werten, mit denen der Dateiname einer generierten Datei enden muss, um im Output-Storage abgelegt zu werden. Groß- und Kleinschreibung werden dabei nicht berücksichtigt. Sobald ein Wert zutrifft, wird die Datei im Storage hinterlegt.

app.storage.output.rules.filename.pattern

Ein regulärer Ausdruck, mit dem der Dateiname einer generierten Datei übereinstimmen muss, um im Output-Storage abgelegt zu werden. Es gelten die Regeln für reguläre Ausdrücke unter Java.

app.storage.output.rules.filesize.greaterThan

Die Dateigröße, die eine generierten Datei überschreiten muss, um im Output-Storage abgelegt zu werden. Es können folgende Einheiten verwendet werden:

  • B für Bytes (z. B.: ‘42B‘)

  • KB für Kilobytes (z. B.: ‘23KB‘)

  • MB für Megabytes (z. B.: ‘13MB‘)

  • GB für Gigabytes (z. B.: ‘4GB‘)

app.storage.output.fileExpiration

Der Zeitraum für den Dateien im Output-Storage aufbewahrt werden sollen.

1

app.storage.output.fileExpirationTimeUnit

Die Zeiteinheit für den Zeitraum für den Dateien im Output-Storage aufbewahrt werden sollen (SECONDS, MINUTES, HOURS, DAYS, WEEKS und MONTHS).

HOURS

Beispiel:

app:
  storage:
    output:
      enable: true
      dataDirectory: data/storage/output
      rules:
        filename:
          startsWith:
            - 'report'
          endsWith:
            - '.html'
          pattern: '^.*\.html$'
        filesize:
          greaterThan: 15MB
      fileExpiration: 1
      fileExpirationTimeUnit: HOURS

6.3. Cleanup

Mit den folgenden Parametern wird konfiguriert, wann die Storages um abgelaufene Dateien bereinigt werden.

Name Beschreibung Standardwert

app.storage.cleanup.schedule

Ein CRON-Ausdruck zur Ausführung des Cleanup-Tasks (siehe CRON).

0 0 * * * * (zu jeder vollen Stunde)

Beispiel:

app:
  storage:
    cleanup:
      schedule: '0 0 * * * *' # the top of every hour of every day.

7. Load Balancing

7.1. Gateway

Beim Einsatz von Load Balancing wird mit diesen Parametern der Gateway-Knoten konfiguriert.

Name Beschreibung Standardwert

app.loadBalancing.gateway.enable

Setzen Sie den Wert des Parameters auf true, um diese Instanz als Gateway-Knoten zu aktivieren.

false

app.loadBalancing.gateway.secret

Ein geheimer Schlüssel zum Austausch zwischen Gateway- und Agent-Knoten. Nur Agent-Knoten mit identischem Schlüssel können an einem Gateway-Knoten angebunden werden.

app.loadBalancing.gateway.agentOfflineDuration

Angabe des Zeitabstandes, nach dem ein Agent-Knoten ohne sich zu melden als Offline markiert wird.

5

app.loadBalancing.gateway.agentOfflineDurationTimeUnit

Angabe der Zeiteinheit, nach dem ein Agent-Knoten ohne sich zu melden als Offline markiert wird. Folgende Werte sind möglich:

  • MILLIS

  • SECONDS

  • MINUTES

  • HOURS

MINUTES

app.loadBalancing.gateway.agentRemoveDuration

Angabe des Zeitabstandes, nach dem ein Agent-Knoten ohne sich zu melden aus der Liste der verfügbaren Knoten entfernt wird.

30

app.loadBalancing.gateway.agentRemoveDurationTimeUnit

Angabe der Zeiteinheit, nach dem ein Agent-Knoten ohne sich zu melden aus der Liste der verfügbaren Knoten entfernt wird. Folgende Werte sind möglich:

  • MILLIS

  • SECONDS

  • MINUTES

  • HOURS

MINUTES

Beispiel:

app:
  loadBalancing:
    gateway:
      enable: true
      secret: 9d473430ef7ac17f8bdaa0cb795946a71a68921c1dfd8b4cb5f907cfbf57c
      agentOfflineDuration: 5
      agentOfflineDurationTimeUnit: MINUTES
      agentRemoveDuration: 30
      agentRemoveDurationTimeUnit: MINUTES

7.2. Agent

Beim Einsatz von Load Balancing wird mit diesen Parametern ein Agent-Knoten konfiguriert.

Name Beschreibung Standardwert

app.loadBalancing.agent.enable

Setzen Sie den Wert des Parameters auf true, um diese Instanz als Agent-Knoten zu aktivieren.

false

app.loadBalancing.agent.gatewayUrl

Die URL unter der der Gateway-Knoten erreichbar ist.

app.loadBalancing.agent.secret

Ein geheimer Schlüssel zum Austausch zwischen Gateway- und Agent-Knoten. Nur Agent-Knoten mit identischem Schlüssel können an einem Gateway-Knoten angebunden werden.

app.loadBalancing.agent.registrationPeriod

Angabe des Zeitabstandes, in denen sich der Agent-Knoten beim Gateway-Knoten meldet, um seinen aktuellen Status mitzuteilen.

10

app.loadBalancing.agent.registrationPeriodTimeUnit

Angabe der Zeiteinheit, in denen sich der Agent-Knoten beim Gateway-Knoten meldet, um seinen aktuellen Status mitzuteilen. Folgende Werte sind möglich:

  • MILLIS

  • SECONDS

  • MINUTES

  • HOURS

SECONDS

Beispiel:

app:
  loadBalancing:
    agent:
      enable: true
      gatewayUrl: http://localhost:5000
      secret: 9d473430ef7ac17f8bdaa0cb795946a71a68921c1dfd8b4cb5f907cfbf57c
      registrationPeriod: 10
      registrationPeriodTimeUnit: SECONDS

8. Anhang

8.1. CRON

Ein wohlgeformter CRON-Ausdruck, wie beispielsweise * * * * * *, besteht aus sechs durch Leerzeichen getrennten Zeit- und Datumsfeldern, jedes mit einem eigenen Bereich gültiger Werte:

┌───────────── second (0-59)
│ ┌───────────── minute (0 - 59)
│ │ ┌───────────── hour (0 - 23)
│ │ │ ┌───────────── day of the month (1 - 31)
│ │ │ │ ┌───────────── month (1 - 12) (or JAN-DEC)
│ │ │ │ │ ┌───────────── day of the week (0 - 7)
│ │ │ │ │ │          (0 or 7 is Sunday, or MON-SUN)
│ │ │ │ │ │
* * * * * *

Es gelten folgende Regeln:

  • Ein Feld kann ein Sternchen (*) enthalten, das immer für "first-last" steht. Für die day-of-the-month- oder day-of-the-week-Felder kann anstelle eines Sternchens auch ein Fragezeichen (?) verwendet werden.

  • Kommas (,) werden verwendet, um Elemente einer Liste zu trennen.

  • Zwei mit einem Bindestrich (-) getrennte Zahlen drücken einen Zahlenbereich aus. Der angegebene Bereich ist inklusive.

  • Wenn auf einen Bereich (oder *) ein / folgt, wird damit das Intervall des Zahlenwerts innerhalb des Bereichs angegeben.

  • Für die Felder "month" und "day of the week" können auch englische Namen verwendet werden. Verwenden Sie die ersten drei Buchstaben des jeweiligen Tages oder Monats (Groß-/Kleinschreibung spielt keine Rolle).

  • Die Felder "day of the month" und "day of the week" können das Zeichen L enthalten, das eine andere Bedeutung hat.

    • Im Feld "day of the month" steht L für den letzten Tag des Monats. Wenn ein negativer Offset folgt (L-n), bedeutet es den n-ten bis letzten Tag des Monats.

    • Im Feld "day of the week" steht L für den letzten Tag der Woche. Wenn eine Zahl oder ein dreistelliger Name (dL oder DDDL) vorangestellt ist, bedeutet es den letzten Wochentag (d oder DDD) im Monat.

  • Das Feld "day of the month" kann nW sein, was für den nächsten Wochentag zum Tag des Monats n steht. Wenn n auf einen Samstag fällt, ergibt dies den Freitag davor. Wenn n auf einen Sonntag fällt, ergibt dies den Montag danach, was auch passiert, wenn n 1 ist und auf einen Samstag fällt (d. h.: 1W steht für den ersten Wochentag des Monats).

  • Wenn das Feld "day of the month" LW ist, bedeutet dies den letzten Wochentag des Monats.

  • Das Feld "day of the week" kann d#n (oder DDD#n) sein, was für den n-ten Tag der Woche d (oder DDD) im Monat steht.

Beispiele:

CRON-Ausdruck Bedeutung

0 0 * * * *

zu jeder vollen Stunde an jedem Tag

*/10 * * * * *

alle 10 Sekunden

0 0 8-10 * * *

8:00, 9:00 und 10:00 an jedem Tag

0 0 6,19 * * *

6:00 und 19:00 an jedem Tag

0 0/30 8-10 * * *

8:00, 8:30, 9:00, 9:30, 10:00 und 10:30 an jedem Tag

0 0 9-17 * * MON-FRI

von 9:00 bis 17:00 zu jeder vollen Stunde an Werktagen

0 0 0 24 DEC ?

jedes Weihnachten um Mitternacht

0 0 0 L * *

der letzte Tag im Monat um Mitternacht

0 0 0 L-3 * *

drittletzter Tag des Monats um Mitternacht

0 0 0 * * 5L

letzter Freitag des Monats um Mitternacht

0 0 0 * * THUL

letzter Donnerstag im Monat um Mitternacht

0 0 0 1W * *

erster Werktag im Monat um Mitternacht

0 0 0 LW * *

letzter Werktag im Monat um Mitternacht

0 0 0 ? * 5#2

der zweite Freitag im Monat um Mitternacht

0 0 0 ? * MON#1

der erste Montag im Monat um Mitternacht

Durch Angabe des Wertes - wird der CRON-Ausdruck deaktiviert und der Zeitplan wird nie ausgeführt.