Zum Inhalt springen

Abhördienst für private Jitterbit-Agenten

Einführung

Der Listening-Dienst ist eine Funktion privater Agenten, die eine Operation ausführen können, wenn ein Ereignis auf einem Endpoint eintritt, und die Verarbeitung von Operationen über einen Agentencluster verteilen können.

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

Voraussetzungen

Um den Listening-Dienst zu verwenden, müssen Sie über Folgendes verfügen:

  • Private Agenten der Version 10.78/11.8 oder höher.

  • TCP-Ports 5701 und 5801 auf allen Agent-Hosts geöffnet.

  • Alle Agenten im selben Netzwerk.

  • Mindestens 3 oder \((N / 2) + 1\) von insgesamt \(N\) Agenten in der Agentengruppe müssen ausgeführt werden.

Aktivieren des Listening-Dienstes

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

Agenten aktivieren

Um den Dienst zu aktivieren, führen Sie diese Schritte auf allen privaten Agenten in der Gruppe aus:

  1. Bearbeiten 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: Aktivieren Sie den Dienst.

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

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

  3. Starten Sie den Agenten neu.

Aktivieren von Vorgängen und Aktivitäten

Standardmäßig ist das Abhören von Ereignissen deaktiviert. Gehen Sie folgendermaßen vor, um das Abhören von Ereignissen bei Vorgängen und Aktivitäten zu aktivieren:

  1. Öffnen Sie das Projekt und suchen Sie die Operation, die die Abhöraktivität enthält. Die Abhörfä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, einsetzen sie bereit. Nach der Bereitstellung wird unten in der Operation der Schalter Ereignisse deaktiviert angezeigt:

    Beispiel einer Hörübung

  3. Um das Ereignisabhören für den Operation zu aktivieren, klicken Sie auf den Schalter Ereignisse deaktiviert.

    Wichtig

    Das Aktivieren oder Deaktivieren des Ereignishörens für einen Operation wirkt sich auf alle Aktivitäten im Operation aus, für die das Hören aktiviert ist.

Überwachen des Abhördienstes

Sie können den Status des Abhördienstes mit der Management Console oder der REST- API überwachen.

Überwachen mit der Management Console

Sobald eine Operation mit einer Listener-Aktivität bereitgestellt wurde, werden die Operation und ihre Listening-Aktivitäten im Abschnitt Listener der Tab Projekte der Management Console:

Projekt-Listener

Überwachen mit der REST- API

Sie können eine HTTP-Nachricht senden GET Anfrage an den Abhördienst, um Statusinformationen anzuzeigen. Die folgenden Endpoints sind verfügbar:

Endpoint Beschreibung
localhost:46912/axis/v1/cdk/internal/leader Den Cluster-Leader-Agenten anzeigen.
localhost:46912/axis/v1/cdk/internal/cluster Zeigt den Clusterstatus an.
localhost:46912/axis/v1/cdk/internal/starter/stats Statistiken anzeigen.
localhost:46912/axis/v1/cdk/internal/members Wiederherstellungsvorgang anzeigen.

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-Leader-Agenten:

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

Clusterstatus anzeigen:

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

Statistiken anzeigen:

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

Mitglieder anzeigen:

curl --silent localhost:46912/axis/v1/cdk/internal/members | python -m json.tool
Example response
[
    {
        "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"
    }
]

Persistenz aktivieren

An einen Agenten gesendete Nachrichten können in einer Datenbank gespeichert werden. Wenn der Agent ausfällt, stellt die Datenbank einen dauerhaften Nachrichtenspeicher bereit, der erneut gesendet werden kann, wenn der Agent wieder online ist.

Standardmäßig wird die interne PostgreSQL -Datenbank speichert diese Informationen, jedoch nur für Cluster mit einem einzigen 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 (intern PostgreSQL)

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

  1. Bearbeiten 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 (externes JDBC oder Redis)

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

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

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

    JDBC-enabled database persistent store settings (Example)
    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 es sich bei der Datenbank um Redis handelt, fügen Sie diese Zeilen hinzu:

    Redis persistent store settings (Example)
    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 über Berechtigungen zum Erstellen von Tabellen sowie zum Erstellen, Lesen, Aktualisieren und Löschen von Daten verfügen.

Fehlerbehebung

Clusterwiederherstellung nach Agentenausfall

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

  1. Bearbeiten 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 Abfrage.

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

  6. Bearbeiten 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 Wiederholungsmechanismus für die Nachrichtenübermittlung im Cluster löscht nicht zugestellte Nachrichten nach einer bestimmten Zeit. Um die Zeit zu ändern oder das Löschen von Nachrichten zu unterdrücken, führen Sie die folgenden Schritte aus:

  1. Bearbeiten 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 auf unbestimmte Zeit aufzubewahren, verwenden Sie den Wert von -1 für N.

  3. Starten Sie den Agenten neu.