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"
}