# RabbitMQ Trigger

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*](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Account</strong></td><td>Nome da conta que será utilizada (a conta deve ser do tipo <em>basic</em>).</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Hostname</strong></td><td>Endereço do host do RabbitMQ.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Port</strong></td><td>Porta onde o RabbitMQ está escutando.</td><td>5672</td><td>Inteiro</td></tr><tr><td><strong>Virtual Host</strong></td><td>Configuração de <em>host</em> virtual que define o <em>tenant</em> do RabbitMQ que se deseja acessar.</td><td>/</td><td><em>String</em></td></tr><tr><td><strong>Auto Acknowledge</strong></td><td>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.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Binary Message</strong></td><td>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.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Maximum Timeout</strong></td><td>Tempo máximo (em milissegundos) para o <em>pipeline</em> processar informação antes de retornar uma resposta. Padrão: 300000. Limite: 900000.</td><td>300000</td><td>Inteiro</td></tr><tr><td><strong>Expiration</strong></td><td>Tempo máximo de espera da mensagem numa fila de <em>pipeline</em>.</td><td>600000</td><td>Inteiro</td></tr><tr><td><strong>Allow Redelivery of Messages</strong></td><td>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.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

{% hint style="info" %}
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.
{% endhint %}

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 href="#consumers" id="consumers"></a>

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 <a href="#declarao-de-filas-routing-keys-e-exchanges" id="declarao-de-filas-routing-keys-e-exchanges"></a>

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 <a href="#formato-de-mensagem-na-entrada-do-pipeline" id="formato-de-mensagem-na-entrada-do-pipeline"></a>

*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>
  }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/messaging-and-events/rabbitmq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
