Junior — Middle
99
Оё метавонед шарҳ диҳед, ки навбатҳо дар RabbitMQ чӣ гуна татбиқ шудаанд ва чӣ гуна паёмҳо дар дохили онҳо коркард мешаванд?
Ширкатҳо дар куҷо пурсиданд
Ҷавоб аз AI
sobes.tech AI
В RabbitMQ очереди реализованы как структуры данных, которые хранят сообщения в памяти (и на диске, если включено персистентное хранение). Каждая очередь связана с обменником (exchange), который маршрутизирует сообщения в очереди по определённым правилам (binding).
Обработка сообщений происходит так:
- Производитель (producer) отправляет сообщение в обменник.
- Обменник направляет сообщение в одну или несколько очередей согласно правилам маршрутизации.
- Очередь хранит сообщения в порядке поступления.
- Потребитель (consumer) подписывается на очередь и получает сообщения по одному или пакетами.
- После получения сообщения потребитель подтверждает его обработку (acknowledgment), и сообщение удаляется из очереди.
RabbitMQ обеспечивает надежность доставки, поддерживает подтверждения, отложенную доставку, повторную попытку и балансировку нагрузки между потребителями.
Пример на Python с библиотекой pika:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)
def callback(ch, method, properties, body):
print(f"Получено {body}")
ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_consume(queue='task_queue', on_message_callback=callback)
channel.start_consuming()