Servicio de escucha en agentes privados de Jitterbit
Introducción
El servicio de escucha es una característica de los agentes privados que puede ejecutar una operación de integración cuando ocurre un evento en un punto final, y puede equilibrar la carga del procesamiento de operaciones a través de un grupo de agentes.
El servicio solo funciona en grupos de agentes privados, y solo con los siguientes conectores y actividades:
Requisitos previos
Para utilizar el servicio de escucha, debe tener lo siguiente:
-
Agentes privados versión 10.78 / 11.16 o posterior.
-
Se recomienda tener un número impar de agentes en un grupo de agentes, aunque no es obligatorio. Con un número par, una interrupción de red puede dividir el grupo en dos mitades, y ninguna de las mitades tiene suficientes agentes para mantener el clúster en funcionamiento. Un número impar asegura que un lado siempre retenga suficientes agentes. También se recomienda un mínimo de 3 agentes en el grupo de agentes para beneficiarse plenamente de las características de balanceo de carga y tolerancia a fallos del servicio de escucha.
-
\((N / 2) + 1\) de un total de \(N\) agentes en el grupo de agentes, redondeado hacia abajo al número entero más cercano, debe estar en funcionamiento y unido al clúster. \(N\) cuenta todos los agentes registrados en el grupo de agentes, independientemente de si están en funcionamiento o no. Por ejemplo, un grupo de 4 agentes requiere 3 agentes en funcionamiento, y un grupo de 5 agentes también requiere 3.
-
Puertos TCP 5701 y 5801 abiertos en todos los hosts de agentes.
Nota
Dependiendo de su sistema, se pueden utilizar los siguientes comandos para probar puertos abiertos en un agente:
telnet <dirección del agente> <puerto>netcat -vz <dirección del agente> <puerto>onc -vz <dirección del agente> <puerto>Test-NetConnection <dirección del agente> -Port <puerto>(PowerShell)
Asegúrese de que su antivirus y firewall permitan conexiones a través de los puertos 5701 y 5801 para una prueba precisa.
-
Todos los agentes en la misma red.
Si encuentra el siguiente mensaje de error en Studio, puede ser porque no ha cumplido con todos los requisitos:
Error al habilitar eventos
Error al habilitar eventos para la operación.
El clúster no ha alcanzado el tamaño mínimo requerido.
Habilitar el servicio de escucha
El servicio de escucha está deshabilitado por defecto. Debe habilitar el servicio de escucha en todos los agentes privados de un grupo, y en ambas operaciones y actividades del proyecto.
Habilitar agentes
Para habilitar el servicio, siga estos pasos en todos los agentes privados del grupo:
-
Edite
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
Agregue 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: Habilita el servicio.
-
Línea 2: Establece automáticamente el tamaño de la cola de eventos.
-
Línea 3: (Opcional) Descomente para establecer manualmente el tamaño de la cola de eventos, donde \(N\) es menor o igual al número de núcleos de procesador en el host del agente. (Si se utiliza, comente la línea 2.)
-
-
Reinicie el agente.
Habilitar operaciones y actividades
Por defecto, la escucha de eventos está deshabilitada. Para habilitar la escucha de eventos en operaciones y actividades, siga estos pasos:
-
Abra el proyecto y encuentre 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 está desplegada, despliegue la operación. Después de que esté desplegada, el interruptor 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 interruptor Eventos Deshabilitados.
Importante
Habilitar o deshabilitar la escucha de eventos para una operación afecta a todas las actividades habilitadas para escuchar en la operación.
Monitorear el servicio de escucha
Puedes monitorear el estado del servicio de escucha con la Consola de Administración o la API REST.
Monitorear con la Consola de Administración
Una vez que se despliega una operación con una actividad de escucha, la operación y sus actividades de escucha se muestran en la pestaña de Listeners de la página de Proyectos de la Consola de Administración:

Monitorear con la API REST
Puedes enviar una solicitud HTTP GET al servicio de escucha para ver información de estado. Los siguientes puntos finales de información están disponibles:
| Endpoint | Descripción |
|---|---|
localhost:46912/axis/v1/cdk/internal/leader |
Muestra el agente líder del clúster. |
localhost:46912/axis/v1/cdk/internal/cluster |
Muestra el estado del clúster. |
localhost:46912/axis/v1/cdk/internal/starter/stats |
Muestra estadísticas. |
localhost:46912/axis/v1/cdk/internal/members |
Muestra el proceso de restauración. |
Consejo
Para restablecer las estadísticas, ejecuta este comando:
curl -XDELETE localhost:46912/axis/v1/cdk/internal/starter/stats
Ejemplos
Muestra 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
}
Muestra 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
}
}
Muestra 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 pueden almacenarse en una base de datos. Si el agente falla, la base de datos proporciona un almacenamiento persistente de mensajes que pueden reenviarse cuando el agente vuelve a estar en línea.
Por defecto, la base de datos PostgreSQL interna almacena esta información, pero solo para clústeres de un solo agente. Para clústeres con más de un agente, se debe habilitar la persistencia manualmente.
También se 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 PostgreSQL interna, siga estos pasos en todos los agentes privados del grupo:
-
Edite
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
Agregue 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 utilizando una base de datos externa habilitada para JDBC o un servidor Redis, siga estos pasos en todos los agentes privados del grupo:
-
Edite
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
Si la base de datos utiliza una conexión JDBC, agregue estas líneas:
Configuraciones de almacenamiento persistente de base de datos habilitada para JDBC (Ejemplo)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.SQLServerDriverSi la base de datos es Redis, agregue estas líneas:
Configuraciones de almacenamiento persistente de Redis (Ejemplo)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
Para la solución de problemas relacionada, consulte lo siguiente en la guía de solución de problemas del agente privado:
Restauración del clúster después de la falla del agente
Si un agente falla con la persistencia habilitada, se puede restaurar manualmente utilizando estos pasos:
-
Edita
JITTERBIT_HOME/Resources/jitterbit-agent-config.propertiesen el host del agente fallido. -
Agrega esta línea:
agent.sdk_framework.listener.running.mode=restore -
Inicia el agente.
-
Usa la REST API para consultar el estado del agente.
-
Cuando el estado de
leaderNodeStateseaRESTORED, detén el agente. -
Edita
JITTERBIT_HOME/Resources/jitterbit-agent-config.propertiesnuevamente y elimina o comenta la línea agregada en el paso 2. -
Inicia 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 suprimir la eliminación de mensajes, sigue estos pasos:
-
Edita
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties. -
Encuentra la siguiente línea y cambia el valor de \(N\) (en minutos):
agent.sdk_framework.retry.deleteRetryableMessageAfter=NConsejo
Para mantener todos los mensajes indefinidamente, usa el valor de
-1paraN. -
Reinicia el agente.