Back to questions
Junior — Middle
59
Каково взаимодействие между отправителем сообщений и получателем в RabbitMQ?
Companies where asked
Yappy
Answer from AI
sobes.tech AI
В RabbitMQ взаимодействие между отправителем сообщений (producer) и получателем (consumer) происходит через посредника — брокера сообщений. Отправитель публикует сообщения в очередь или обменник (exchange), а получатель подписывается на очередь и получает сообщения из неё.
Основные шаги:
- Отправитель подключается к RabbitMQ и отправляет сообщение в exchange.
- Exchange маршрутизирует сообщение в одну или несколько очередей согласно правилам (binding).
- Получатель подключается к очереди и получает сообщения, обрабатывая их.
Это позволяет асинхронно обмениваться данными, разгружая компоненты и повышая надёжность системы.
Пример на Python с использованием pika:
import pika
# Отправитель
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)
channel.basic_publish(exchange='', routing_key='task_queue', body='Hello World!')
connection.close()
# Получатель
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"Received {body.decode()}")
ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_consume(queue='task_queue', on_message_callback=callback)
channel.start_consuming()