Zum Inhalt springen

Listening-Dienst auf Jitterbit privaten Agenten

Einführung

Der Listening-Dienst ist eine Funktion von privaten Agenten, die eine Integrationsoperation ausführen kann, wenn ein Ereignis an einem Endpunkt eintritt, und die Verarbeitung von Operationen über ein Cluster von Agenten ausbalancieren kann.

Der Dienst funktioniert nur mit privaten Agentengruppen und nur mit den folgenden Konnektoren und Aktivitäten:

Voraussetzungen

Um den Listening-Dienst zu nutzen, müssen Sie Folgendes haben:

  • Private Agenten Version 10.78 / 11.16 oder höher.

  • Eine ungerade Anzahl von Agenten in einer Agentengruppe. Um die Vorteile der Lastverteilung und Fehlertoleranz des Listening-Dienstes voll auszuschöpfen, wird empfohlen, mindestens 3 Agenten in der Agentengruppe zu haben.

  • \((N + 1) / 2\) von insgesamt \(N\) Agenten in der Agentengruppe müssen aktiv sein. Wenn beispielsweise 5 Agenten in einer Agentengruppe sind, müssen 3 von ihnen aktiv sein.

  • TCP-Ports 5701 und 5801 müssen auf allen Agenten-Hosts geöffnet sein.

    Hinweis

    Abhängig von Ihrem System können die folgenden Befehle verwendet werden, um offene Ports auf einem Agenten zu testen:

    • telnet <agent address> <port>
    • netcat -vz <agent address> <port> oder nc -vz <agent address> <port>
    • Test-NetConnection <agent address> -Port <port> (PowerShell)

    Stellen Sie sicher, dass Ihre Antiviren-Software und Firewall Verbindungen über die Ports 5701 und 5801 für genaue Tests zulassen.

  • Alle Agenten im selben Netzwerk.

Wenn Sie die folgende Fehlermeldung im Studio erhalten, kann dies daran liegen, dass Sie nicht alle Anforderungen erfüllt haben:

Fehler beim Aktivieren von Ereignissen

Fehler beim Aktivieren von Ereignissen für die Operation.

Der Cluster hat die erforderliche Mindestgröße nicht erreicht.

Aktivieren Sie den Listening-Dienst

Der Listening-Dienst ist standardmäßig deaktiviert. Sie müssen den Listening-Dienst auf allen privaten Agenten in einer Gruppe und sowohl für die Operation als auch für die Aktivität des Projekts aktivieren.

Agenten aktivieren

Um den Dienst zu aktivieren, folgen Sie diesen Schritten für alle privaten Agenten in der Gruppe:

  1. Bearbeiten Sie JITTERBIT_HOME/Resources/jitterbit-agent-config.properties.

  2. Fügen Sie diese Zeilen hinzu:

    1
    2
    3
    agent.sdk_framework.listener.enabled=true
    agent.sdk_framework.listeners.matchEventsQueueToAvailableCores=true
    # agent.sdk_framework.listeners.eventsQueue=N
    
    • Zeile 1: Aktiviert den Dienst.

    • Zeile 2: Setzt die Größe der Ereigniswarteschlange automatisch.

    • Zeile 3: (Optional) Kommentieren Sie aus, um die Größe der Ereigniswarteschlange manuell festzulegen, wobei \(N\) kleiner oder gleich der Anzahl der Prozessorkerne auf dem Agenten-Host ist. (Wenn verwendet, kommentieren Sie Zeile 2 aus.)

  3. Starten Sie den Agenten neu.

Operationen und Aktivitäten aktivieren

Standardmäßig ist das Ereignis-Listening deaktiviert. Um das Ereignis-Listening für Operationen und Aktivitäten zu aktivieren, folgen Sie diesen Schritten:

  1. Öffnen Sie das Projekt und suchen Sie die Operation, die die Listening-Aktivität enthält. Die Listening-Fähigkeit einer Aktivität wird durch ein Symbol oben rechts angezeigt, für aktiviert oder für nicht aktiviert.

  2. Wenn die Operation noch nicht bereitgestellt ist, stellen Sie sie bereit. Nachdem sie bereitgestellt wurde, erscheint der Schalter Ereignisse deaktiviert am Ende der Operation:

    Beispiel für eine Listening-Aktivität

  3. Um das Ereignis-Listening für die Operation zu aktivieren, klicken Sie auf den Schalter Ereignisse deaktiviert.

    Wichtig

    Das Aktivieren oder Deaktivieren des Ereignis-Listenings für eine Operation wirkt sich auf alle listening-aktivierten Aktivitäten in der Operation aus.

Den Listening-Dienst überwachen

Sie können den Status des Listening-Dienstes mit der Management-Konsole oder der REST-API überwachen.

Überwachung mit der Management-Konsole

Sobald eine Operation mit einer Listening-Aktivität bereitgestellt ist, werden die Operation und ihre Listening-Aktivitäten im Tab Listener der Seite Projekte in der Management-Konsole angezeigt:

projects listeners

Monitor mit der REST API

Sie können eine HTTP GET-Anfrage an den Listening-Service senden, um Statusinformationen zu sehen. Die folgenden Informationsendpunkte sind verfügbar:

Endpunkt Beschreibung
localhost:46912/axis/v1/cdk/internal/leader Zeigt den Cluster-Leiter-Agenten an.
localhost:46912/axis/v1/cdk/internal/cluster Zeigt den Cluster-Status an.
localhost:46912/axis/v1/cdk/internal/starter/stats Zeigt Statistiken an.
localhost:46912/axis/v1/cdk/internal/members Zeigt den Wiederherstellungsprozess an.

Tipp

Um die Statistiken zurückzusetzen, führen Sie diesen Befehl aus:

curl -XDELETE localhost:46912/axis/v1/cdk/internal/starter/stats

Beispiele

Zeigen Sie den Cluster-Leiter-Agenten an:

Befehl
curl --silent localhost:46912/axis/v1/cdk/internal/leader | python -m json.tool
Beispielantwort
{
    "AgentClusterMemberUUID": "67a77314-46c7-4243-9193-bc143ece5ed0",
    "OrgId": "20980",
    "AgentId": "281020",
    "AgentHost": "192.168.64.18",
    "AgentName": "Agent 1",
    "AgentGroupId": "171230",
    "AgentGroupName": "Agent Group A"
}

Zeigen Sie den Cluster-Status an:

Befehl
curl --silent localhost:46912/axis/v1/cdk/internal/cluster | python -m json.tool
Beispielantwort
{
    "clusterTime": 1725895381981,
    "currentNumberOfMembers": 2,
    "state": "ACTIVE",
    "hasMinimumSize": true,
    "minimumMembersRequired": 2
}

Zeigen Sie Statistiken an:

curl --silent localhost:46912/axis/v1/cdk/internal/starter/stats | python -m json.tool
Beispielantwort
{
    "sdk-retryable-events-queue": 0,
    "sdk-inflight-messages-0": 0,
    "sdk-processing-events-queue-0": {
        "stats": null,
        "lastProcessedEvent": -1,
        "queueSize": 0
    }
}

Zeigen Sie Mitglieder an:

curl --silent localhost:46912/axis/v1/cdk/internal/members | python -m json.tool
Beispielantwort
[
    {
        "isLeader": "true",
        "minClusterSize": "2",
        "inetSocketAddress": "192.168.64.18",
        "uuid": "67a77314-46c7-4243-9193-bc143ece5ed0",
        "version": "5.0.5",
        "isLiteMember": "false",
        "leaderNodeState": "STARTED",
        "ipv4": "true",
        "inetAddress": "192.168.64.18",
        "port": "5701",
        "ipv6": "false",
        "host": "rocky89",
        "AgentName": "Agent 1",
        "AgentId": "281020"
    },
    {
        "isLeader": "false",
        "minClusterSize": "2",
        "inetSocketAddress": "192.168.64.25",
        "uuid": "efbfab6a-0326-43c0-a4f7-f14a26a36d25",
        "version": "5.0.5",
        "isLiteMember": "false",
        "ipv4": "true",
        "inetAddress": "192.168.64.25",
        "port": "5701",
        "ipv6": "false",
        "host": "192.168.64.25",
        "AgentName": "Agent 2",
        "AgentId": "281030"
    }
]

Aktivieren Sie die Persistenz

Nachrichten, die an einen Agenten gesendet werden, können in einer Datenbank gespeichert werden. Wenn der Agent ausfällt, bietet die Datenbank einen persistenten Speicher für Nachrichten, die erneut gesendet werden können, wenn der Agent wieder online ist.

Standardmäßig speichert die interne PostgreSQL-Datenbank diese Informationen, jedoch nur für Cluster mit einem einzelnen Agenten. Für Cluster mit mehr als einem Agenten müssen Sie die Persistenz manuell aktivieren.

Sie können auch eine externe JDBC-fähige Datenbank oder einen Redis-Server verwenden.

Multi-Agent-Persistenz (internes PostgreSQL)

Um die Multi-Agent-Persistenz in der internen PostgreSQL-Datenbank zu aktivieren, befolgen Sie diese Schritte auf allen privaten Agenten in der Gruppe:

  1. Bearbeiten Sie JITTERBIT_HOME/Resources/jitterbit-agent-config.properties.

  2. Fügen Sie diese Zeilen hinzu:

    agent.sdk_framework.queueStore.enabled=true
    agent.sdk_framework.queueStore.type=dbinternal
    agent.sdk_framework.persistence.enabled=true
    agent.sdk_framework.persistence.type=dbinternal
    
  3. Starten Sie den Agenten neu.

Multi-Agent-Persistenz (externe JDBC oder Redis)

Um die Multi-Agent-Persistenz mithilfe einer externen JDBC-fähigen Datenbank oder eines Redis-Servers zu aktivieren, befolgen Sie diese Schritte auf allen privaten Agenten in der Gruppe:

  1. Bearbeiten Sie JITTERBIT_HOME/Resources/jitterbit-agent-config.properties.

  2. Wenn die Datenbank eine JDBC-Verbindung verwendet, fügen Sie diese Zeilen hinzu:

    Einstellungen für persistente Speicherung in JDBC-fähiger Datenbank (Beispiel)
    agent.sdk_framework.queueStore.enabled=true
    agent.sdk_framework.queueStore.type=db
    
    agent.sdk_framework.persistence.enabled=true
    agent.sdk_framework.persistence.type=db
    
    agent.sdk_framework.datastore.db.url=jdbc:sqlserver://harmony:1433;database=cloud
    agent.sdk_framework.datastore.db.user=sa
    agent.sdk_framework.datastore.db.password=******
    agent.sdk_framework.datastore.db.databaseName=cloud
    agent.sdk_framework.datastore.db.dialect=org.hibernate.dialect.SQLServerDialect
    agent.sdk_framework.datastore.db.driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver
    

    Wenn die Datenbank Redis ist, fügen Sie diese Zeilen hinzu:

    Einstellungen für persistente Speicherung in Redis (Beispiel)
    agent.sdk_framework.queueStore.enabled=true
    agent.sdk_framework.queueStore.type=redis
    
    agent.sdk_framework.persistence.enabled=true
    agent.sdk_framework.persistence.type=redis
    
    agent.sdk_framework.datastore.redis.url=redis://redis:6379
    
    #Optional - pool configuration
    
    agent.sdk_framework.datastore.redis.maxTotal=8
    agent.sdk_framework.datastore.redis.maxIdle=8
    agent.sdk_framework.datastore.redis.minIdle=0
    agent.sdk_framework.datastore.redis.blockWhenExhausted=true
    agent.sdk_framework.datastore.redis.maxWaitMillis=-1
    agent.sdk_framework.datastore.redis.testOnBorrow=false
    agent.sdk_framework.datastore.redis.testOnReturn=false
    agent.sdk_framework.datastore.redis.jmxEnabled=true
    
  3. Starten Sie den Agenten neu.

Wichtig

Der Datenbankbenutzer muss die Berechtigungen zum Erstellen von Tabellen sowie zum Erstellen, Lesen, Aktualisieren und Löschen von Daten haben.

Fehlersuche

Cluster-Wiederherstellung nach Agentenausfall

Wenn ein Agent mit aktivierter Persistenz ausfällt, können Sie ihn manuell mit diesen Schritten wiederherstellen:

  1. Bearbeiten Sie JITTERBIT_HOME/Resources/jitterbit-agent-config.properties auf dem Host des fehlgeschlagenen Agenten.

  2. Fügen Sie diese Zeile hinzu:

    agent.sdk_framework.listener.running.mode=restore
    
  3. Starten Sie den Agenten.

  4. Verwenden Sie die REST API, um den Status des Agenten abzufragen.

  5. Wenn der Status für leaderNodeState RESTORED ist, stoppen Sie den Agenten.

  6. Bearbeiten Sie JITTERBIT_HOME/Resources/jitterbit-agent-config.properties erneut und entfernen oder kommentieren Sie die in Schritt 2 hinzugefügte Zeile aus.

  7. Starten Sie den Agenten.

Nicht zugestellte Nachrichten

Der Mechanismus zur Wiederholungszustellung von Cluster-Nachrichten löscht nicht zugestellte Nachrichten nach einer bestimmten Zeit. Um den Zeitraum zu ändern oder das Löschen von Nachrichten zu unterdrücken, befolgen Sie diese Schritte:

  1. Bearbeiten Sie JITTERBIT_HOME/Resources/jitterbit-agent-config.properties.

  2. Finden Sie die folgende Zeile und ändern Sie den Wert für \(N\) (in Minuten):

    agent.sdk_framework.retry.deleteRetryableMessageAfter=N
    

    Tipp

    Um alle Nachrichten unbegrenzt zu behalten, verwenden Sie den Wert -1 für N.

  3. Starten Sie den Agenten neu.