Serviço de escuta em agentes privados Jitterbit
Introdução
O serviço de escuta é um recurso de agentes privados que podem executar uma operação de integração quando um evento acontece em um endpoint e podem balancear a carga do processamento de operações em um cluster de agentes.
O serviço funciona apenas em grupos de agentes privados e apenas com os seguintes conectores e atividades:
Pré-requisitos
Para usar o serviço de escuta, você deve ter o seguinte:
-
Agentes privados versão 10.78 / 11.8 ou posterior.
-
Portas TCP 5701 e 5801 abertas em todos os hosts de agentes.
-
Todos os agentes na mesma rede.
-
Pelo menos 3, ou \((N / 2) + 1\) de um total de \(N\) agentes no grupo de agentes devem estar em execução.
Habilitar o serviço de escuta
O serviço de escuta é desabilitado por padrão. Você deve habilitar o serviço de escuta de todos os agentes privados de um grupo e da operação e atividade do projeto.
Habilitar agentes
Para habilitar o serviço, siga estas etapas em todos os agentes privados do grupo:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Adicione estas linhas:
1 2 3
agent.sdk_framework.listener.enabled=true agent.sdk_framework.listeners.matchEventsQueueToAvailableCores=true # agent.sdk_framework.listeners.eventsQueue=N
-
Linha 1: Habilitar o serviço.
-
Linha 2: Define o tamanho da fila de eventos automaticamente.
-
Linha 3: (Opcional) Descomente para definir o tamanho da fila de eventos manualmente, onde \(N\) é menor ou igual ao número de núcleos de processador no hospedar do agente. (Se usado, comente a linha 2.)
-
-
Reinicie o agente.
Habilitar operações e atividades
Por padrão, a escuta de eventos está desabilitada. Para habilitar a escuta de eventos em operações e atividades, siga estas etapas:
-
Abra o projeto e encontre a operação que contém a atividade de escuta. A capacidade de escuta de uma atividade é mostrada por um ícone no canto superior direito, para habilitado, ou para não habilitado.
-
Se a operação ainda não estiver implantada, implantar -a. Após a implantação, o botão de alternância Eventos Desativados aparece na parte inferior da operação:
-
Para habilitar a escuta de eventos para a operação, clique no botão de alternância Eventos desabilitados.
Importante
Habilitar ou desabilitar a escuta de eventos para uma operação afeta todas as atividades com escuta habilitada na operação.
Monitore o serviço de escuta
Você pode monitorar o status do serviço de escuta com o Management Console ou a API REST.
Monitore com o Management Console
Depois que uma operação com uma atividade de ouvinte é implantada, a operação e suas atividades de escuta são mostradas em Ouvintes aba da página Projetos do Management Console:
Monitore com a API REST
Você pode enviar um HTTP GET
solicitação ao serviço de escuta para ver informações de status. Os seguintes endpoints de informações estão disponíveis:
Endpoint | Descrição |
---|---|
localhost:46912/axis/v1/cdk/internal/leader | Mostrar o agente líder do cluster. |
localhost:46912/axis/v1/cdk/internal/cluster | Mostrar o status do cluster. |
localhost:46912/axis/v1/cdk/internal/starter/stats | Mostrar estatísticas. |
localhost:46912/axis/v1/cdk/internal/members | Mostrar processo de restauração. |
Dica
Para redefinir as estatísticas, execute este comando:
curl -XDELETE localhost:46912/axis/v1/cdk/internal/starter/stats
Exemplos
Mostrar o agente líder do cluster:
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"
}
Mostrar o status do cluster:
curl --silent localhost:46912/axis/v1/cdk/internal/cluster | python -m json.tool
{
"clusterTime": 1725895381981,
"currentNumberOfMembers": 2,
"state": "ACTIVE",
"hasMinimumSize": true,
"minimumMembersRequired": 2
}
Mostrar estatí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 membros:
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 persistência
Mensagens enviadas a um agente podem ser armazenadas em um banco de dados. Se o agente falhar, o banco de dados fornece um armazenamento persistente de mensagens que podem ser reenviadas quando o agente voltar a ficar online.
Por padrão, o banco de dados PostgreSQL interno) armazena essas informações, mas somente para clusters de agente único. Para clusters com mais de um agente, você deve habilitar manualmente a persistência.
Você também pode usar um banco de dados externo habilitado para JDBC ou um servidor Redis.
Persistência multiagente (PostgreSQL interno)
Para habilitar a persistência de vários agentes no banco de dados interno PostgreSQL, siga estas etapas em todos os agentes privados do grupo:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Adicione estas linhas:
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 o agente.
Persistência multiagente (JDBC externo ou Redis)
Para habilitar a persistência de vários agentes usando um banco de dados externo habilitado para JDBC ou um servidor Redis, siga estas etapas em todos os agentes privados no grupo:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Se o banco de dados usar uma conexão JDBC, adicione estas linhas:
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
Se o banco de dados for Redis, adicione estas linhas:
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 o agente.
Importante
O usuário do banco de dados deve ter permissões para criar tabelas e para criar, ler, atualizar e excluir dados.
Solução de problemas
Restauração de cluster após falha do agente
Se um agente falhar com a persistência habilitada, você pode restaurá-lo manualmente usando estas etapas:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
no hospedar do agente com falha. -
Adicione esta linha:
agent.sdk_framework.listener.running.mode=restore
-
Inicie o agente.
-
Use a API REST para consultar o status do agente.
-
Quando o status para
leaderNodeState
éRESTORED
, pare o agente. -
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
novamente e remova ou comente a linha adicionada na etapa 2. -
Inicie o agente.
Mensagens não entregues
O mecanismo de repetição de entrega de mensagens de cluster exclui mensagens não entregues após um período. Para alterar o período ou suprimir a exclusão de mensagens, siga estas etapas:
-
Editar
JITTERBIT_HOME/Resources/jitterbit-agent-config.properties
. -
Encontre a seguinte linha e altere o valor de \(N\) (em minutos):
agent.sdk_framework.retry.deleteRetryableMessageAfter=N
Dica
Para manter todas as mensagens indefinidamente, use o valor de
-1
paraN
. -
Reinicie o agente.