Ответ
RabbitMQ — это брокер сообщений, реализующий модель публикация-подписка (Pub/Sub) и очереди сообщений (Message Queue).
Основные модели:
- Point-to-Point (P2P) — сообщения отправляются в очередь и обрабатываются одним потребителем.
- Pub/Sub — сообщения рассылаются всем подписчикам через обменники (exchanges).
Пример (Python, pika):
import pika
# Подключение к RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# Объявление очереди (P2P)
channel.queue_declare(queue='hello')
# Отправка сообщения
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
# Объявление обменника (Pub/Sub)
channel.exchange_declare(exchange='logs', exchange_type='fanout')
channel.basic_publish(exchange='logs', routing_key='', body='Log message')
connection.close()
RabbitMQ поддерживает разные типы обменников (direct, fanout, topic, headers), что делает его гибким для различных сценариев.