Event Publisher

Descubra mais sobre o componente Event Publisher e saiba como utilizá-lo na Digibee Integration Platform.

Um evento é uma mensagem que notifica outros componentes sobre uma mudança de estado, uma ação ou um fato ocorrido. O Event Publisher publica um evento para que outros pipelines configurados para escutá-lo possam reagir quando a publicação ocorrer.

Para mais informações, leia a documentação sobre Arquitetura orientada a eventos.

Parâmetros

Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Como o Event Publisher é utilizado?

Para implementar uma Arquitetura Orientada a Eventos é necessário definir:

  • o pipeline que publicará o evento (Publicador);

  • um ou mais pipelines que irão consumir o evento (Assinantes).

Para configurar o pipeline que publicará o evento:

  • arraste o Event Publisher para o canvas do pipeline Publicador;

  • configure o nome do evento no parâmetro Event do Event Publisher;

  • caso deseje passar um payload junto com o evento, defina o conteúdo do parâmetro Body.

Para configurar o pipeline que consumirá o evento:

  • altere o tipo do trigger para Event Trigger no pipeline Assinante;

  • abra as configurações do trigger e informe o nome do evento a ser consumido no parâmetro Event Name. Esse valor deve ser idêntico ao informado no Event Publisher do pipeline Publicador.

Cenários de erro

java.util.NoSuchElementException: Timeout waiting for idle object

Quando utilizar o Event Publisher, o seguinte erro pode ocorrer: java.util.NoSuchElementException: Timeout waiting for idle object

Isso significa que o componente está com dificuldades para lidar com a grande quantidade de eventos que estão sendo enviados ao mesmo tempo. Para resolver essa situação, você tem duas opções:

  • Aumentar o número de réplicas do pipeline: isso ajuda a distribuir a carga de eventos de forma mais eficiente e reduzir a pressão sobre o componente para que ele processe os eventos de maneira mais fluida.

  • Implementar um tratamento de erros com o Retry: essa abordagem envolve o uso do componente Retry para para fazer novas tentativas de envio dos eventos que causaram o erro. Isso pode ser útil para lidar com picos de carga temporários ou eventos que ocasionalmente falham.

Fluxo de mensagens

Entrada

O componente espera uma mensagem válida em formato JSON. Não é esperado nenhum atributo específico. A mensagem de entrada poderá ser referenciada através de Double Braces tanto para a configuração do parâmetro Event quanto do parâmetro Body. Por exemplo, digamos que a mensagem abaixo fosse passada para o Event Publisher:

{
"eventName": "example",
"body": {
"id": "1",
"description": "Description of the case"
}
}

Você poderia definir uma expressão Double Braces no parâmetro Event para obter o valor do atributo eventName:

{{ message.eventName }}

O atributo body também poderia ser configurado da mesma forma:

{{ message.body }}

Saída

O componente repassa a mensagem recebida do componente anterior sem nenhuma alteração. No caso do exemplo acima, a mensagem repassada seria:

{
"eventName": "example",
"body": {
"id": "1",
"description": "Description of the case"
}
}

Atualizado