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>odernc -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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
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.)
-
-
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:
-
Ö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.
-
Wenn die Operation noch nicht bereitgestellt ist, stellen Sie sie bereit. Nachdem sie bereitgestellt wurde, erscheint der Schalter Ereignisse deaktiviert am Ende der Operation:

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

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:
curl --silent localhost:46912/axis/v1/cdk/internal/leader | python -m json.tool
{
"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:
curl --silent localhost:46912/axis/v1/cdk/internal/cluster | python -m json.tool
{
"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
{
"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
[
{
"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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
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 -
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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
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.SQLServerDriverWenn 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 -
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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.propertiesauf dem Host des fehlgeschlagenen Agenten. -
Fügen Sie diese Zeile hinzu:
agent.sdk_framework.listener.running.mode=restore -
Starten Sie den Agenten.
-
Verwenden Sie die REST API, um den Status des Agenten abzufragen.
-
Wenn der Status für
leaderNodeStateRESTOREDist, stoppen Sie den Agenten. -
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.propertieserneut und entfernen oder kommentieren Sie die in Schritt 2 hinzugefügte Zeile aus. -
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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
Finden Sie die folgende Zeile und ändern Sie den Wert für \(N\) (in Minuten):
agent.sdk_framework.retry.deleteRetryableMessageAfter=NTipp
Um alle Nachrichten unbegrenzt zu behalten, verwenden Sie den Wert
-1fürN. -
Starten Sie den Agenten neu.