DEV Community

Gabriel J
Gabriel J

Posted on

10

O que é RabbitMQ e qual sua função na programação?

RabbitMQ é um software de mensageria de código aberto que permite que aplicativos se comuniquem uns com os outros usando filas de mensagens. Ele foi originalmente desenvolvido em Erlang pela Rabbit Technologies Ltd. e agora é mantido pela Pivotal Software, Inc.

As mensagens em RabbitMQ são enviadas para filas e consumidas por aplicativos. Os aplicativos podem produzir ou consumir mensagens. Um produtor é um aplicativo que envia mensagens para a fila, enquanto um consumidor é um aplicativo que recebe mensagens da fila.

Existem quatro componentes principais em RabbitMQ:

1- O produtor
2- A fila
3- O exchange
4- O consumidor

O produtor envia mensagens para o exchange, que as encaminha para a fila. O consumidor recebe as mensagens da fila. Existem diferentes tipos de exchanges que determinam como as mensagens são roteadas para as filas.

O que é um exchange?

Um exchange no RabbitMQ é um componente fundamental da arquitetura de mensagens do RabbitMQ. É responsável por rotear as mensagens recebidas de um produtor para uma ou mais filas de consumidores.

Quando um produtor envia uma mensagem para o RabbitMQ, ele especifica o nome do exchange e uma chave de roteamento. O exchange, por sua vez, usa a chave de roteamento para determinar qual fila ou filas de consumidores devem receber a mensagem.

Existem quatro tipos de exchanges no RabbitMQ:

Direct: roteia mensagens para uma fila com base em uma chave de roteamento exata definida pelo produtor.

Topic: roteia mensagens para filas com base em padrões de chave de roteamento, permitindo que as mensagens sejam entregues a várias filas que correspondem ao padrão.

Headers: roteia mensagens para filas com base em atributos da mensagem, definidos pelo produtor, como tipo de conteúdo ou código de idioma.

Fanout: roteia mensagens para todas as filas que estão vinculadas ao exchange.

Os exchanges são criados e configurados por administradores do RabbitMQ, geralmente por meio de um cliente de linha de comando ou interface gráfica. As filas de consumidores são vinculadas a um exchange, permitindo que as mensagens sejam entregues de forma confiável aos seus destinatários.

O RabbitMQ é altamente escalável e pode lidar com grandes volumes de mensagens. Ele suporta vários protocolos de mensagens, incluindo:

AMQP (Advanced Message Queuing Protocol)

MQTT (Message Queuing Telemetry Transport)

STOMP (Simple Text Oriented Messaging Protocol)

Além disso, o RabbitMQ oferece recursos de segurança, como autenticação e autorização de usuários.

O RabbitMQ é amplamente utilizado em aplicativos distribuídos e em nuvem para comunicação entre microserviços. Ele também é usado em sistemas de processamento de dados em tempo real e em aplicativos de IoT (Internet das Coisas). O RabbitMQ é popular em linguagens de programação como Java, Python e Ruby.

Em resumo, RabbitMQ é uma tecnologia de mensageria escalável e flexível que permite que os aplicativos se comuniquem de maneira eficiente e segura. Ele é amplamente utilizado em aplicativos distribuídos e em nuvem, bem como em sistemas de processamento de dados em tempo real e aplicativos de IoT. O RabbitMQ oferece bibliotecas de cliente para várias linguagens de programação e recursos avançados para personalização e escalabilidade.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (1)

Collapse
 
gabrielscardoso profile image
Gabriel Santos Cardoso

Muito bom! Estou entrando nesse mundo de mensageria e microsserviços e esse resumo, bem direto ao ponto mas ainda assim claro foi super legal para me dar um gostinho da ferramenta.

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay