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).

Parâmetro
Descrição
Valor padrão
Tipo de dado

Event (DB)

Nome do evento criado que será publicado para consumo por outros pipelines.

{{ DEFAULT(message.eventName, "new-event") }}

String

Body (DB)

Payload a ser enviado com o evento.

{{ message.$ }}

JSON

Log Each Event Sent

Quando ativada, a opção irá gerar uma entrada de log para cada evento enviado.

False

Booleano

Fail On Error

Se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success".

False

Booleano

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