KrólikMQ - RabbitMQ
Deweloper(zy) | Oprogramowanie kluczowe |
---|---|
Wersja stabilna | 3.8.19 / 5 lipca 2021 r
|
Magazyn | github |
Napisane w | Erlang |
System operacyjny | Wieloplatformowy |
Rodzaj | AMQP , oprogramowanie pośredniczące zorientowane na wiadomości |
Licencja | Licencja publiczna Mozilli |
Strona internetowa | www |
RabbitMQ to oprogramowanie typu open source do brokerów wiadomości (czasami nazywane oprogramowaniem pośredniczącym zorientowanym na wiadomości ), które pierwotnie zaimplementowało protokół Advanced Message Queuing Protocol (AMQP) i od tego czasu zostało rozszerzone o architekturę wtyczek w celu obsługi protokołu Streaming Text Oriented Messaging Protocol (STOMP) , MQ Telemetry Transport (MQTT) i inne protokoły.
Napisany w języku Erlang , serwer RabbitMQ jest zbudowany na platformie Open Telecom Platform do klastrowania i przełączania awaryjnego. Biblioteki klienta do interfejsu z brokerem są dostępne dla wszystkich głównych języków programowania. Kod źródłowy jest udostępniany na licencji Mozilla Public License .
Historia
Pierwotnie opracowany przez Rabbit Technologies Ltd., która powstała jako joint venture pomiędzy LShift i CohesiveFT w 2007 roku, RabbitMQ została przejęta w kwietniu 2010 roku przez SpringSource , oddział VMware . Projekt stał się częścią Pivotal Software w maju 2013 roku.
Projekt składa się z:
- Serwer wymiany RabbitMQ
- Bramki dla AMQP , HTTP , STOMP i MQTT protokołów
- Biblioteki klienckie AMQP dla Java , .NET Framework i Erlang. (Klienci AMQP dla innych języków są dostępni od innych dostawców).
- Platforma wtyczek umożliwiająca rozszerzanie, ze wstępnie zdefiniowaną kolekcją obsługiwanych wtyczek, w tym:
- Wtyczka „Shovel”, która zajmuje się przenoszeniem lub kopiowaniem (replikowaniem) komunikatów z jednego brokera do drugiego.
- Wtyczka „Federacja” umożliwiająca efektywne udostępnianie komunikatów pomiędzy brokerami (na poziomie giełdy).
- Wtyczka „Zarządzanie”, która umożliwia monitorowanie i kontrolowanie brokerów i klastrów brokerów.
Przykłady
Ta sekcja zawiera przykładowe programy napisane w Pythonie (przy użyciu pakietu pika ) do wysyłania i odbierania wiadomości przy użyciu kolejki.
Wysyłanie
Poniższy fragment kodu nawiązuje połączenie, upewnia się, że istnieje kolejka odbiorców, następnie wysyła wiadomość i ostatecznie zamyka połączenie.
#!/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()
Otrzymujący
Podobnie następujący program odbiera komunikaty z kolejki i wyświetla je na ekranie: (Uwaga: ten przykład nie potwierdza odbioru komunikatu.)
#!/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()
Zobacz też
Bibliografia
Dalsza lektura
- Joern Barthel (2009-09-13). "Pierwsze kroki z AMQP i RabbitMQ" . InfoQ.
- Petera Coopera (2009-04-09). „RabbitMQ — szybka i niezawodna opcja kolejkowania dla rubinistów” . Rubin Wewnątrz.
- RabbitMQ: broker wiadomości typu open source, który po prostu działa . Rozmowy techniczne Google. 2008-09-25.