Zum Inhalt springen

Abhördienst auf privaten Jitterbit-Agenten

Einführung

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

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

Voraussetzungen

Um den Abhördienst nutzen zu können, müssen Sie über Folgendes verfügen:

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

  • Eine ungerade Anzahl von Agenten in einer Agentengruppe. Um die Lastausgleichs- und Fehlertoleranzfunktionen des Listening-Dienstes optimal nutzen zu können, wird empfohlen, mindestens drei Agenten in der Agentengruppe zu haben.

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

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

  • Alle Agenten im selben Netzwerk.

Wenn Sie im Integration Studio die folgende Fehlermeldung erhalten, liegt dies möglicherweise daran, dass Sie nicht alle Voraussetzungen erfüllt haben:

Ereignisse konnten nicht aktiviert werden

Ereignisse für den Operation konnten nicht aktiviert werden.

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

Aktivieren Sie den Listening-Dienst

Der Listening-Dienst ist standardmäßig deaktiviert. Sie müssen ihn aktivieren.#enable-agents) 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 die folgenden Schritte auf allen privaten Agenten 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. Dabei ist \(N\) kleiner oder gleich der Anzahl der Prozessorkerne auf dem Host. (Falls verwendet, kommentieren Sie Zeile 2 aus.)

  3. Starten Sie den Agenten neu.

Aktivieren von Vorgängen und Aktivitäten

Standardmäßig ist die Ereignisüberwachung deaktiviert. Gehen Sie folgendermaßen vor, um die Ereignisüberwachung für Vorgänge und Aktivitäten zu aktivieren:

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

    Beispiel für eine Hörübung

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

    Wichtig

    Das Aktivieren oder Deaktivieren des Ereignis-Abhörens für einen Operation wirkt sich auf alle abhörfähigen Aktivitäten im Operation aus.

Überwachen Sie den Abhördienst

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 folgenden Befehl aus:

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

Beispiele

Zeigen Sie den Cluster-Leader-Agenten an:

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. Fällt der Agent aus, bietet die Datenbank einen persistenten Nachrichtenspeicher, der erneut gesendet werden kann, sobald der Agent wieder online ist.

Standardmäßig wird die interne PostgreSQL -Datenbank speichert 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 (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 folgende 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 benötigt Berechtigungen zum Erstellen von Tabellen sowie zum Erstellen, Lesen, Aktualisieren und Löschen von Daten.

Fehlerbehebung

Clusterwiederherstellung nach Agentenausfall

Wenn ein Agent bei aktivierter Persistenz ausfällt, können Sie ihn folgendermaßen 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 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 Nachrichtenzustellung im Cluster löscht nicht zugestellte Nachrichten nach einer bestimmten Zeitspanne. So ändern Sie die Zeitspanne oder verhindern das Löschen von Nachrichten:

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

  3. Starten Sie den Agenten neu.

OSZAR »