Servicio de escucha en agentes privados de Jitterbit
Introducción
El servicio de escucha es una característica de los agentes privados que pueden ejecutar una operación de integración cuando ocurre un evento en un extremo y pueden equilibrar la carga del procesamiento de las operaciones en un grupo de agentes.
El servicio funciona únicamente en grupos de agentes privados y únicamente con los siguientes conectores y actividades:
Prerrequisitos
Para utilizar el servicio de escucha, debe contar con lo siguiente:
-
Agentes privados versión 10.78/11.8 o posterior.
-
Puertos TCP 5701 y 5801 abiertos en todos los hosts de agentes.
-
Todos los agentes en la misma red.
-
Al menos 3, o \((N / 2) + 1\) de un total de \(N\) agentes en el grupo de agentes deben estar en ejecución.
Habilitar el servicio de escucha
El servicio de escucha está deshabilitado de forma predeterminada. Debes habilitarlo el servicio de escucha de todos los agentes privados de un grupo y de la operación y actividad del proyecto).
Habilitar agentes
Para habilitar el servicio, siga estos pasos en todos los agentes privados del grupo:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Añade estas líneas:
1 2 3
agent.sdk_framework.listener.enabled=true agent.sdk_framework.listeners.matchEventsQueueToAvailableCores=true # agent.sdk_framework.listeners.eventsQueue=N
-
Línea 1: Habilitar el servicio.
-
Línea 2: Establece el tamaño de la cola de eventos automáticamente.
-
Línea 3: (opcional) Quite el comentario para configurar el tamaño de la cola de eventos manualmente, donde \(N\) es menor o igual que la cantidad de núcleos de procesador en el alojar del agente. (Si se usa, comente la línea 2).
-
-
Reinicie el agente.
Habilitar operaciones y actividades
De forma predeterminada, la escucha de eventos está deshabilitada. Para habilitar la escucha de eventos en operaciones y actividades, siga estos pasos:
-
Abra el proyecto y busque la operación que contiene la actividad de escucha. La capacidad de escucha de una actividad se muestra mediante un ícono en la parte superior derecha. para habilitado, o para no habilitado.
-
Si la operación aún no se ha implementado, desplegar. Una vez implementada, el botón Eventos deshabilitados aparece en la parte inferior de la operación:
-
Para habilitar la escucha de eventos para la operación, haga clic en el botón Eventos deshabilitados.
Importante
Habilitar o deshabilitar la escucha de eventos para una operación afecta a todas las actividades con escucha habilitada en la operación.
Monitorizar el servicio de escucha
Puede supervisar el estado del servicio de escucha con la Management Console o la API REST.
Monitorizar con la Management Console
Una vez que se implementa una operación con una actividad de escucha, la operación y sus actividades de escucha se muestran en Escuchadores pestaña de la página Proyectos de la Management Console:
Monitorizar con la API REST
Puedes enviar un HTTP GET
Solicitud al servicio de escucha para ver información de estado. Están disponibles los siguientes extremos de información:
Extremo | Descripción |
---|---|
localhost:46912/axis/v1/cdk/internal/leader | Mostrar el agente líder del clúster. |
localhost:46912/axis/v1/cdk/internal/cluster | Mostrar el estado del cluster. |
localhost:46912/axis/v1/cdk/internal/starter/stats | Mostrar estadísticas. |
localhost:46912/axis/v1/cdk/internal/members | Mostrar proceso de restauración. |
Consejo
Para restablecer las estadísticas, ejecute este comando:
curl -XDELETE localhost:46912/axis/v1/cdk/internal/starter/stats
Ejemplos
Mostrar el agente líder del clúster:
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"
}
Muestra el estado del clúster:
curl --silent localhost:46912/axis/v1/cdk/internal/cluster | python -m json.tool
{
"clusterTime": 1725895381981,
"currentNumberOfMembers": 2,
"state": "ACTIVE",
"hasMinimumSize": true,
"minimumMembersRequired": 2
}
Mostrar estadísticas:
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
}
}
Mostrar miembros:
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"
}
]
Habilitar persistencia
Los mensajes enviados a un agente se pueden almacenar en una base de datos. Si el agente falla, la base de datos proporciona un almacenamiento persistente de mensajes que se pueden reenviar cuando el agente vuelva a estar en línea.
De forma predeterminada, la base de datos PostgreSQL interna almacena esta información, pero solo para clústeres con un solo agente. Para clústeres con más de un agente, debe habilitar la persistencia manualmente.
También puede utilizar una base de datos externa habilitada para JDBC o un servidor Redis.
Persistencia de múltiples agentes (PostgreSQL interno)
Para habilitar la persistencia de múltiples agentes en la base de datos interna PostgreSQL, siga estos pasos en todos los agentes privados del grupo:
-
Edit
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Añade estas líneas:
agent.sdk_framework.queueStore.enabled=true agent.sdk_framework.queueStore.type=dbinternal agent.sdk_framework.persistence.enabled=true agent.sdk_framework.persistence.type=dbinternal
-
Reinicie el agente.
Persistencia de múltiples agentes (JDBC externo o Redis)
Para habilitar la persistencia de múltiples agentes mediante una base de datos externa habilitada para JDBC o un servidor Redis, siga estos pasos en todos los agentes privados del grupo:
-
Edit
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Si la base de datos utiliza una conexión JDBC, agregue estas líneas:
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
Si la base de datos es Redis, agregue estas líneas:
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
-
Reinicie el agente.
Importante
El usuario de la base de datos debe tener permisos para crear tablas y para crear, leer, actualizar y eliminar datos.
Solución de problemas
Restauración del clúster después de una falla del agente
Si un agente falla con la persistencia habilitada, puede restaurarlo manualmente siguiendo estos pasos:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
en el alojar del agente fallido. -
Añade esta línea:
agent.sdk_framework.listener.running.mode=restore
-
Inicie el agente.
-
Utilice la API REST para consultar el estado del agente.
-
Cuando el estado de
leaderNodeState
esRESTORED
, detenga al agente. -
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
nuevamente y elimine o comente la línea agregada en el paso 2. -
Inicie el agente.
Mensajes no entregados
El mecanismo de reintento de entrega de mensajes del clúster elimina los mensajes no entregados después de un período. Para cambiar el período o para suprimir la eliminación de mensajes, siga estos pasos:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Busque la siguiente línea y cambie el valor de \(N\) (en minutos):
agent.sdk_framework.retry.deleteRetryableMessageAfter=N
Consejo
Para conservar todos los mensajes indefinidamente, utilice el valor de
-1
paraN
. -
Reinicie el agente.