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 auftritt, 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-Service 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-Services 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 Antivirensoftware 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 Integration Studio erhalten, liegt es möglicherweise daran, dass Sie nicht alle Anforderungen erfüllt haben:

Fehler beim Aktivieren von Ereignissen

Fehler beim Aktivieren von Ereignissen für die Operation.

Cluster hat die erforderliche Mindestgröße nicht erreicht.

Aktivieren Sie den Listening-Service

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

Agenten aktivieren

Um den Dienst zu aktivieren, befolgen Sie diese Schritte 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, befolgen Sie diese Schritte:

  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-Listening 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.

Mit der Management-Konsole überwachen

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

projects listeners

Überwachen 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 Clusterstatus 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 Clusterstatus 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 der 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-Agenten-Persistenz (interne PostgreSQL)

Um die Multi-Agenten-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-Agenten-Persistenz (externe JDBC oder Redis)

Um die Multi-Agenten-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 haben, Tabellen zu erstellen und Daten zu erstellen, zu lesen, zu aktualisieren und zu löschen.

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 ausgefallenen 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

Die Wiederholungsmechanismus für die Nachrichtenübermittlung im Cluster löscht nicht zugestellte Nachrichten nach einer bestimmten Zeit. Um den Zeitraum zu ändern oder die Löschung von Nachrichten zu unterdrücken, befolgen Sie diese Schritte:

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

  2. Suchen 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.