Ответ
RabbitMQ — это популярный брокер сообщений с открытым исходным кодом, который реализует протокол AMQP (Advanced Message Queuing Protocol). Он используется для построения распределенных и отказоустойчивых систем, позволяя различным сервисам асинхронно обмениваться данными.
Основные компоненты
- Producer (Издатель): Приложение, которое отправляет (публикует) сообщения.
- Exchange (Обменник): Получает сообщения от издателей и маршрутизирует их в одну или несколько очередей. Тип обменника (
direct,topic,fanout,headers) определяет логику маршрутизации. - Queue (Очередь): Буфер, который хранит сообщения до тех пор, пока они не будут обработаны потребителем.
- Consumer (Потребитель): Приложение, которое подписывается на очередь, получает и обрабатывает сообщения.
Пример использования (Python с библиотекой pika)
1. Producer (отправитель сообщения)
Этот скрипт подключается к RabbitMQ, создает очередь hello и отправляет в нее сообщение.
# producer.py
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('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()
2. Consumer (получатель сообщения)
Этот скрипт подписывается на очередь hello и обрабатывает поступающие сообщения.
# consumer.py
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(f" [x] Received {body.decode()}")
channel.basic_consume(queue='hello',
on_message_callback=callback,
auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
RabbitMQ широко применяется в микросервисных архитектурах для организации взаимодействия между сервисами, а также для выполнения отложенных и фоновых задач.