RabbitMQ Trigger

Descubra mais sobre o RabbitMQ Trigger e saiba como utilizá-lo na Digibee Integration Platform.

O RabbitMQ Trigger é responsável pelo consumo das mensagens de um broker RabbitMQ.

Parâmetros

Dê uma olhada nas opções 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

Account

Nome da conta que será utilizada (a conta deve ser do tipo basic).

N/A

String

Hostname

Endereço do host do RabbitMQ.

N/A

String

Port

Porta onde o RabbitMQ está escutando.

5672

Inteiro

Virtual Host

Configuração de host virtual que define o tenant do RabbitMQ que se deseja acessar.

/

String

Auto Acknowledge

Se “true”, a mensagem será confirmada assim que chegar ao trigger e não esperará um retorno do pipeline associado; se "false", a mensagem ficará pendente enquanto o pipeline a estiver processando.

False

Booleano

Binary Message

Se "true", define que a mensagem recebida será binária e, portanto, seu conteúdo será apresentado como base64; se "false", a mensagem será apresentada como texto.

False

Booleano

Maximum Timeout

Tempo máximo (em milissegundos) para o pipeline processar informação antes de retornar uma resposta. Padrão: 300000. Limite: 900000.

300000

Inteiro

Expiration

Tempo máximo de espera da mensagem numa fila de pipeline.

600000

Inteiro

Allow Redelivery of Messages

Se "true", uma execução de pipeline será re-executada em caso de erro; se "false", não haverá re-execução em caso de erro.

False

Booleano

O cliente RabbitMQ não permite a limitação do tamanho de mensagens. Caso mensagens muito grandes sejam enviadas, a infraestrutura de triggers da Digibee poderá recusá-las. Não aconselhamos o envio de mensagens grandes através de um barramento de mensagens.

Esse trigger possui 2 estratégias de acknowledge (confirmação de recebimento) de mensagens:

  • Acknowledge automático

A confirmação de cada mensagem recebida pelo trigger acontece de forma automática e imediata no recebimento e o broker entende que ela foi entregue. Por um lado, o acknowledge automático garante um grande desempenho, mas por outro não impede a perda da mensagem caso o pipeline associado não a processe ou a processe com falha.

  • Acknowledge manual

Cada mensagem recebida pelo trigger permanece em "unchecked", um estado de não confirmação, enquanto estiverem sendo processadas pelo pipeline. No acknowledge manual, o broker RabbitMQ entende que a mensagem está pendente e, caso haja qualquer problema na infraestrutura do trigger ou o pipeline responda com erro, a mensagem em questão pode ser reprocessada. O número de consumers configurados para o pipeline dita quantas mensagens podem ser processadas ao mesmo tempo. Para isso, o tamanho de prefetch do RabbitMQ é configurado com o mesmo valor de consumers do pipeline.

Consumers

A configuração de consumidores feita no momento de implantação de um pipeline impacta diretamente no throughput de recebimento e saída de mensagens quando o RabbitMQ Trigger é ativado. Caso o auto acknowledge esteja desabilitado, a preocupação com o número de consumidores se torna ainda mais importante. Isso acontece porque o número de mensagens simultâneas sendo processadas é igual ao número de consumidores configurados.

Declaração de filas, routing keys e exchanges

O RabbitMQ Trigger não declara parâmetros de configuração de filas, routing keys e exchanges no broker RabbitMQ. É esperado que toda a configuração já esteja feita para que o trigger possa consumir mensagens de filas.

Formato de mensagem na entrada do pipeline

Pipelines associados com o RabbitMQ Trigger recebem a seguinte mensagem como entrada:

{
  "body": <STRING message content; if binary, then Base64>,
  "properties": {
    "appId": <STRING application id>,
    "classId": <STRING class id>,
    "clusterId": <STRING cluster id>,
    "contentEncoding": <STRING content encoding>,
    "contentType": <STRING message content type>,
    "correlationId": <STRING correlation id>,
    "deliveryMode": <INT delivery mode>,
    "expiration": <STRING message expiration in ms>,
    "messageId": <STRING message id>,
    "priority": <INT message priority>,
    "replyTo": <STRING reply to queue>,
    "type": <STRING message type>,
    "userId": <STRING user id>,
    "timestamp": <LONG message timestamp>
  }
  "headers": {
    "header1": "value1", ...
  },
  "envelope": {
    "deliveryTag": <LONG message delivery tag>
    "exchange": <STRING exchange that processed the message>
    "routingKey": <STRING routing key used to route message>
  }
}

Atualizado