Messaging pattern
# Messaging pattern

Em arquitetura de software, um messaging pattern, ou em português padrão mensagem, é um padrão arquitetural orientado a redes que descreve como duas partes diferentes de um sistema de troca de mensagens conectam-se e comunicam-se um com o outro.
Em telecomunicações, um message exchange pattern (MEP), ou em português padrão de troca de mensagens, descreve o padrão de mensagens requerido por um protocolo de comunicação para estabelecer ou usar um canal de comunicação. Existem dois padrões de troca de mensagens principais - um padrão solicitação-resposta e um padrão unidirecional. Por exemplo, o TCP é um protocolo que segue o padrão solicitação-resposta e o UDP um protocolo que segue o padrão unidirecional.

## SOAP

O termo "Padrão de Troca de Mensagens" possui um significado específico dentro do protocolo SOAP. Os tipos MEP do SOAP incluem:
* Apenas-Entrada (In-Only): É equivalente ao unidirecional. Um padrão de troca de mensagem unidirecional onde o consumidor envia uma mensagem ao provedor que fornece apenas uma resposta de estado.
* Apenas-Entrada Robusto (Robust In-Only): Este padrão é para a troca de mensagens confiável unidirecional. O consumidor inicia com uma mensagem a qual o provedor respondo com o estado. Se a resposta for um estado, a troca está completa, mas se for uma falha, o consumidor deve responder com um estado.
* Entrada-Saída (In-Out): É equivalente à solicitação-resposta. Um padrão de troca de mensagens bidirecional onde o consumidor inicia com uma mensagem, o provedor responde com uma mensagem ou uma falha e o consumidor responde com um estado.
* Entrada e Saída-Opcional (In Optional-Out): Um padrão de troca de mensagens bidirecional onde a resposta do provedor é opcional.
* Apenas Saída
* Apenas Saída Robusto
* Saída Entrada
* Saída Entrada-Opcional

## ØMQ

A biblioteca de enfileiramento de mensagens ØMQ fornece os conhecidos sockets (um tipo de generalização sobre os tradicionais IP e sockets Unix) que requerem a indicação de um padrão de mensagens a ser usado e são particularmente otimizados para este tipo de padrão. Os padrões básicos ØMQ são:
* Solicitação-resposta conecta a um conjunto de clientes par um conjunto de serviços. Isto é um padrão de chamada de procedimento remoto e de distribuição de tarefas.
* Publicação-assinatura conecta um conjunto de publicadores par um conjunto de assinantes. Este é um padrão de distribuição de dados.
* Empurrão-puxão (push-pull) - canalização - conecta nós em um padrão fun-out/fun-in que pode ter múltiplas etapas e loops. Este é um padrão de distribuição paralela de tarefas e de coleção.
* Par exclusivo conecta dois sockets em um par exclusivo. Este é um padrão de baixo-nível para casos de uso específicos e avançados.