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:
-
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. Dabei ist \(N\) kleiner oder gleich der Anzahl der Prozessorkerne auf dem Host. (Falls verwendet, kommentieren Sie Zeile 2 aus.)
-
-
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:
-
Ö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.
-
Wenn die Operation noch nicht bereitgestellt ist, einsetzen sie durch. Nach der Bereitstellung wird unten in der Operation der Schalter Ereignisse deaktiviert angezeigt:
-
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:
Ü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:
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. 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:
-
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 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
-
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:
-
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
Entfernen oder kommentieren Sie die in Schritt 2 hinzugefügte Zeile aus. -
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:
-
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 unbegrenzt aufzubewahren, verwenden Sie den Wert von
-1
fürN
. -
Starten Sie den Agenten neu.