Messaging Brokers
Tags: node, distributedsystems, microservices, devops
Published: 2023-05-24 19:05:03

Como os aplicativos se comunicam está se tornando um desafio cada vez maior. O uso de middleware de mensagens simplifica esse desafio e permite uma infraestrutura de comunicação comum que cresce e se dimensiona para atender às condições mais exigentes. Mas a comunicação pode acontecer de muitas formas diferentes e como o middleware de mensagens fornece comunicação não é diferente.

Um método de comunicação usado pelo middleware de mensagens é um modelo baseado em servidor que usa um corretor de mensagens . Com um corretor de mensagem, o aplicativo de origem (produtor) envia uma mensagem para um processo do servidor que pode fornecer empacotamento de dados, roteamento, tradução de mensagem, persistência e entrega para todos os destinos apropriados (consumidores). A característica definidora de um corretor de mensagem é que o próprio corretor é um serviço discreto. Produtores e consumidores se comunicam com o corretor usando protocolos padrão ou proprietários. O corretor de mensagens geralmente fornece todo o gerenciamento de estado e rastreamento de clientes para que os aplicativos individuais não precisem assumir essa responsabilidade e a complexidade da entrega de mensagens seja construída no próprio corretor de mensagens.

Existem duas formas básicas de comunicação com um corretor de mensagens:

- Publicar e assinar (tópicos)
- Ponto a Ponto (Filas)

## Publicar e assinar mensagens
Em um sistema de mensagens de publicação e assinatura, os produtores enviam mensagens sobre um tópico. Nesse modelo, o produtor é conhecido como editor e o consumidor como assinante. Um ou mais editores podem publicar sobre o mesmo tópico, e uma mensagem de um ou mais editores pode ser recebida por muitos assinantes. Os assinantes assinam os tópicos e todas as mensagens publicadas no tópico são recebidas por todos os assinantes no tópico. Este modelo fornece entrega orientada por interesse simples com base nos tópicos que são assinados pelos aplicativos.

## Comunicação ponto a ponto
As comunicações ponto a ponto, em sua forma mais simples, têm um produtor e um consumidor. Esse estilo de mensagem geralmente usa uma fila para armazenar as mensagens enviadas pelo produtor até que sejam recebidas pelo consumidor. O produtor da mensagem envia a mensagem para a fila; o consumidor de mensagens recupera mensagens da fila e envia uma confirmação de que a mensagem foi recebida. Mais de um produtor pode enviar mensagens para a mesma fila e mais de um consumidor pode recuperar mensagens da mesma fila. Quando vários consumidores são usados, cada consumidor geralmente recebe uma parte do fluxo de mensagens para permitir o processamento simultâneo.

## Corretores de Mensagens baseados em servidor
Os intermediários de mensagens baseados em servidor têm muitas vantagens, incluindo processamento, distribuição de mensagens e persistência de dados centralizados. Os exemplos incluem muitos corretores de mensagem proprietários, implementações de Java Message Service (JMS) e produtos de código aberto como Apache Kafka , Apache Pulsar e Eclipse Mosquitto.

Em alguns casos, é necessário um modelo de comunicação descentralizado. Essa abordagem "sem intermediário" ou ponto a ponto normalmente fornece um mecanismo para oferecer suporte à comunicação direta entre aplicativos para casos de uso em que é necessária uma latência muito baixa.

## Apache Kafka
<img src="https://upload.wikimedia.org/wikipedia/commons/5/53/Apache_kafka_wordtype.svg" height="177" align="right">

O **Apache Kafka** é uma plataforma open-source de processamento de streams desenvolvida pela ASF - Apache Software Foundation, escrita em Scala e Java. O projeto tem como objetivo fornecer uma plataforma unificada, de alta capacidade e baixa latência para tratamento de dados em tempo real.