RabbitMQ - RabbitMQ
Desenvolvedor (s) | Pivotal Software |
---|---|
Versão estável | 3.8.19 / 5 de julho de 2021
|
Repositório | github |
Escrito em | Erlang |
Sistema operacional | Plataforma cruzada |
Modelo | AMQP , middleware orientado a mensagens |
Licença | Licença Pública Mozilla |
Local na rede Internet | www |
RabbitMQ é um software corretor de mensagens de código aberto (às vezes chamado de middleware orientado a mensagens ) que implementou originalmente o Protocolo de Enfileiramento de Mensagens Avançado (AMQP) e, desde então, foi estendido com uma arquitetura de plug-in para oferecer suporte ao Protocolo de Mensagens Orientadas a Texto Streaming (STOMP) , MQ Telemetry Transport (MQTT) e outros protocolos.
Escrito em Erlang , o servidor RabbitMQ é construído na estrutura da plataforma Open Telecom para clustering e failover. Bibliotecas de cliente para interface com o broker estão disponíveis para todas as principais linguagens de programação. O código-fonte é liberado sob a Licença Pública Mozilla .
História
Originalmente desenvolvido pela Rabbit Technologies Ltd., que começou como uma joint venture entre a LShift e a CohesiveFT em 2007, a RabbitMQ foi adquirida em abril de 2010 pela SpringSource , uma divisão da VMware . O projeto tornou-se parte da Pivotal Software em maio de 2013.
O projeto consiste em:
- O servidor de troca RabbitMQ
- Gateways para AMQP , HTTP , STOMP , e MQTT protocolos
- Bibliotecas de cliente AMQP para Java , .NET Framework e Erlang. (Clientes AMQP para outros idiomas estão disponíveis em outros fornecedores.)
- Uma plataforma de plug-in para extensibilidade, com uma coleção predefinida de plug-ins com suporte, incluindo:
- Um plug-in "Shovel" que se encarrega de mover ou copiar (replicar) mensagens de um corretor para outro.
- Um plug-in de "Federação" que permite o compartilhamento eficiente de mensagens entre corretores (no nível de troca).
- Um plug-in de "gerenciamento" que permite o monitoramento e controle de corretores e clusters de corretores.
Exemplos
Esta seção fornece programas de amostra escritos em Python (usando o pacote pika ) para enviar e receber mensagens usando uma fila.
Enviando
O fragmento de código a seguir estabelece uma conexão, verifica se a fila do destinatário existe, envia uma mensagem e, por fim, fecha a conexão.
#!/usr/bin/env python3
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host="localhost"))
channel = connection.channel()
channel.queue_declare(queue="hello")
channel.basic_publish(exchange="", routing_key="hello", body="Hello World!")
print(" [x] Sent 'Hello World!'")
connection.close()
Recebendo
Da mesma forma, o programa a seguir recebe mensagens da fila e as imprime na tela: (Observação: este exemplo não confirma o recebimento da mensagem.)
#!/usr/bin/env python3
import pika
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
connection = pika.BlockingConnection(pika.ConnectionParameters(host="localhost"))
channel = connection.channel()
channel.queue_declare(queue="hello")
print(" [*] Waiting for messages. To exit press Ctrl+C")
channel.basic_consume(queue="hello", on_message_callback=callback)
channel.start_consuming()
Veja também
Referências
Leitura adicional
- Joern Barthel (13/09/2009). "Introdução ao AMQP e RabbitMQ" . InfoQ.
- Peter Cooper (09/04/2009). "RabbitMQ - Uma opção de enfileiramento rápida e confiável para Rubistas" . RubyInside.
- RabbitMQ: um corretor de mensagens de código aberto que simplesmente funciona . Google Tech Talks. 25/09/2008.