Sobes.tech
Back to questions
Junior — Middle
59

Каково взаимодействие между отправителем сообщений и получателем в RabbitMQ?

Companies where asked
Yappy

Answer from AI

sobes.tech AI

В RabbitMQ взаимодействие между отправителем сообщений (producer) и получателем (consumer) происходит через посредника — брокера сообщений. Отправитель публикует сообщения в очередь или обменник (exchange), а получатель подписывается на очередь и получает сообщения из неё.

Основные шаги:

  1. Отправитель подключается к RabbitMQ и отправляет сообщение в exchange.
  2. Exchange маршрутизирует сообщение в одну или несколько очередей согласно правилам (binding).
  3. Получатель подключается к очереди и получает сообщения, обрабатывая их.

Это позволяет асинхронно обмениваться данными, разгружая компоненты и повышая надёжность системы.

Пример на 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()