RabbitMQ

Conheça o componente e saiba como utilizá-lo.

Micaella Mazoni avatar
Escrito por Micaella Mazoni
Atualizado há mais de uma semana

IMPORTANTE: Esta documentação foi descontinuada. Leia a documentação RabbitMQ atualizada no nosso novo portal de documentação.

O RabbitMQ permite a publicação de mensagens em um broker RabbitMQ.

Dê uma olhada nos parâmetros de configuração do componente:

  • Account: credencial utilizada para autenticação no RabbitMQ.

  • Hostname: nome do host que executa o RabbitMQ.

  • Port: porta de conexão do RabbitMQ (padrão: 5672).

  • Connection Timeout: tempo máximo para conexão ao RabbitMQ.

  • Virtual Host: nome do grupo lógico dentro do RabbitMQ ao qual se deseja conectar (padrão /).

  • Exchange Name: nome do exchange definido no RabbitMQ ao qual se deseja enviar mensagens.

  • Binary Message: se a opção estiver ativada, a mensagem será considerada binária e o campo Message Body deverá informar uma string contendo a representação base64 do conjunto de bytes a enviar; do contrário, a mensagem será considerada como texto.

  • Message Body: conteúdo da mensagem a ser enviada.

  • Routing Key: string representando a chave de relacionamento entre o Exchange e a(s) Fila(s).

  • Headers: conjunto de entradas "chave": "valor" contendo cabeçalhos que serão enviados na mensagem (campo opcional).

  • Message Type: string representando o tipo de mensagem (campo opcional).

  • Message Content Type: string representando o tipo de conteúdo da mensagem (ex.: application/json) (campo opcional).

  • Message Content Encoding: string representando a codificação do conteúdo (ex.: UTF-8) (campo opcional).

  • Priority: número indicando a prioridade da mensagem (campo opcional).

  • Correlation ID: string representando o ID de correlação da mensagem (campo opcional).

  • Message ID: string representando o ID da mensagem (campo opcional).

  • Delivery Mode: se "Persistent Message", então a mensagem é enviada com a flag persistente e o broker tentará mantê-la em disco assim que possível; se "Transient Message", então o broker tentará manter a mensagem em memória.

  • Reply To: string representando o endereço de retorno da mensagem (campo opcional).

  • Message Expiration: número representando o tempo de duração da mensagem em fila (também conhecido como TTL) (campo opcional).

  • Message Timestamp: número representando o timestamp da mensagem (campo opcional).

  • Application Name: string representando o nome da aplicação (campo opcional).

  • 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".

  • Wait for a Publish Acknowledgement: se a opção estiver ativada, o componente aguardará por uma confirmação de publicação da mensagem; do contrário, o componente enviará a mensagem e não aguardará confirmação.

  • Publisher Acknowledgement Timeout: tempo máximo que o componente aguardará por uma confirmação de publicação da mensagem.

  • Mandatory Message: se a opção estiver ativada, então a mensagem é marcada como obrigatória e um erro será lançado caso ela não possa ser roteada; do contrário, então nenhuma verificação de roteamento será feita (é necessário que a opção "Wait for a Publish Acknowledgement" seja habilitada).

IMPORTANTE: todos os parâmetros de configuração opcionais não serão definidos na mensagem caso os seus valores sejam deixados em branco.

Exemplo de resposta de requisição ao RabbitMQ

<MESMA MENSAGEM QUE FOI INFORMADA NA ENTRADA>

IMPORTANTE: o RabbitMQ não altera a mensagem apresentada na sua entrada, exceto em caso de erro.

Exemplo de resposta de requisição ao RabbitMQ contendo erro

{
"success": false,
"message": "Could not publish message to RabbitMQ due to an error",
"error": "java.net.SocketTimeoutException: connect timed out"
}

  • success: “false” quando a operação falha

  • message: mensagem sobre o erro

  • exception: informação sobre o tipo de erro ocorrido

Fluxo de Mensagens

Entrada

O componente aceita qualquer mensagem de entrada, podendo utilizá-la por meio de Double Braces.

Saída

  • sem erro

<A MESMA MENSAGEM INFORMADA NA ENTRADA>

  • com erro

{
"success": false,
"message": "Could not publish message to RabbitMQ due to an error",
"error": "java.net.SocketTimeoutException: connect timed out"
}

RabbitMQ em Ação

Uma mensagem é sempre enviada através desse componente a partir do Exchange e do Routing Key. O Exchange possui um bind com um tópico ou uma fila e direciona a mensagem a partir do Routing Key.

Enviando uma mensagem simples

Mensagem de entrada:

{
"message": "test"
}

Configurações:

Hostname: <RABBITMQ HOSTNAME>

Port: <PORT> (porta padrão: 5672)

Virtual Host: /

Exchange Name: <EXCHANGE NAME>

Binary Message: desabilitado

Message: {{ message.$ }}

Routing key: <ROUTING KEY>

Fail On Error: desabilitado

Resultado:

{
"message": "test"
}

Enviando uma mensagem binária simples

Mensagem de entrada:

{
"message": "ewoJIm1lc3NhZ2UiOiAidGVzdCIKfQo="
}

Configurações:

Hostname: <RABBITMQ HOSTNAME>

Port: <PORT> (porta padrão: 5672)

Virtual Host: /

Exchange Name: <EXCHANGE NAME>

Binary Message: habilitado

Message: {{ message.message }}

Routing key: <ROUTING KEY>

Fail On Error: desabilitado

Resultado:

{
"message": "ewoJIm1lc3NhZ2UiOiAidGVzdCIKfQo="
}

Enviando uma mensagem para uma fila e a resposta será devolvida para uma outra especificada (Direct Reply-To)

Mensagem de entrada:

{
"message": "test"
}

Configurações:

Hostname: <RABBITMQ HOSTNAME>

Port: <PORT> (porta padrão: 5672)

Virtual Host: /

Exchange Name: <EXCHANGE NAME>

Binary Message: desabilitado

Message: {{ message.$ }}

Routing key: <ROUTING KEY>

Reply To: <REPLY TO>

Fail On Error: desabilitado

Resultado:

{
"message": "test"
}

Respondeu à sua pergunta?