Pular para o conteúdo principal

Message Channel

Descrição​

O Message Channel é o caminho lógico pelo qual duas aplicações trocam mensagens. Uma aplicação escreve no canal e a outra lê dele, de modo que nenhuma precisa conhecer a localização, a plataforma ou o ritmo da outra. Ele é o bloco de construção mais básico da integração por mensageria: sem canais, não há por onde as mensagens trafegarem.

Os canais são criados e nomeados de acordo com o tipo de informação que carregam. Quem envia escolhe o canal adequado ao assunto da mensagem, e quem recebe escuta o canal que contém o que lhe interessa. Assim, o receptor tem alguma garantia de que o que chega é relevante, e o remetente não precisa saber quem vai consumir.

Na prática, o canal é uma abstração oferecida pelo sistema de mensageria (filas, tópicos, streams). Os padrões Point-to-Point Channel e Publish-Subscribe Channel são as duas especializações principais, e vários outros padrões do grupo refinam o conceito.

Problemas que resolve​

  • Duas aplicações precisam trocar informações de forma assíncrona, sem acoplamento direto de endereço ou de disponibilidade.
  • O remetente não deve precisar saber qual aplicação vai receber sua informação.
  • O receptor precisa de uma forma de receber apenas informações relevantes para ele.
  • É preciso um ponto central e nomeado para administrar, monitorar e proteger o tráfego entre aplicações.

Quando usar​

  • Sempre que a integração for feita por mensageria: todo envio e toda recepção passam por algum canal.
  • Quando se deseja separar tipos de informação em fluxos distintos, cada um com seus produtores e consumidores.
  • Quando é necessário definir, de forma explícita, quais aplicações podem escrever ou ler cada fluxo.

Quando evitar​

  • Quando a interação exige resposta imediata e síncrona, a abstração de canal assíncrono só atrapalha; prefira uma chamada direta.
  • Quando o número de canais cresceria sem controle (um por combinação de remetente e destinatário); nesse caso, repense a granularidade ou use roteamento por conteúdo.

Trade-offs​

GanhoCusto / Risco
Desacoplamento entre quem envia e quem recebeMais um recurso a ser configurado, nomeado e administrado
Separação clara de fluxos por tipo de informaçãoProliferação de canais dificulta a governança
Ponto natural para segurança, monitoramento e retençãoA semântica do canal depende do produto de mensageria
Comunicação assíncrona tolerante a indisponibilidade temporáriaLatência e consistência eventual em vez de resposta imediata
  • Convenção de nomes: nomes de canais viram parte do contrato entre as aplicações e devem ser estáveis e descritivos.
  • Criação: em geral os canais são definidos em tempo de projeto ou implantação, não dinamicamente por cada aplicação.
  • Observabilidade: profundidade, taxa de entrada e de saída de cada canal são métricas básicas de saúde da integração.

Diagrama​

A aplicação remetente escreve mensagens no canal e a receptora as lê, sem que uma conheça diretamente a outra.

Padrões relacionados​

Referência​