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:
-
Bearbeiten
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: 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.)
-
-
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:
-
Ö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.
-
Wenn die Operation noch nicht bereitgestellt ist, einsetzen sie bereit. Nach der Bereitstellung wird unten in der Operation der Schalter Ereignisse deaktiviert angezeigt:
-
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:
Ü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:
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"
}
Clusterstatus anzeigen:
curl --silent localhost:46912/axis/v1/cdk/internal/cluster | python -m json.tool
{
"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
{
"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
[
{
"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:
-
Bearbeiten
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 (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:
-
Bearbeiten
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
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
-
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:
-
Bearbeiten
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 Abfrage.
-
Wenn der Status für
leaderNodeState
IstRESTORED
, stoppen Sie den Agenten. -
Bearbeiten
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
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:
-
Bearbeiten
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 auf unbestimmte Zeit aufzubewahren, verwenden Sie den Wert von
-1
fürN
. -
Starten Sie den Agenten neu.