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>
odernc -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:
-
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, befolgen Sie diese Schritte:
-
Ö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-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:
Ü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:
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 Clusterstatus 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 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:
-
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-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:
-
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.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
-
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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
auf dem Host des ausgefallenen 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
leaderNodeState
RESTORED
ist, stoppen Sie den Agenten. -
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
erneut und entfernen oder kommentieren Sie die in Schritt 2 hinzugefügte Zeile aus. -
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:
-
Bearbeiten Sie
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
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ürN
. -
Starten Sie den Agenten neu.