Sobes.tech
Back to questions
Junior — Middle
58

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

Companies where asked
НТЦ Вулкан

Answer from AI

sobes.tech AI

Я знаком с RabbitMQ как с брокером сообщений, который реализует протокол AMQP. В проектах использовал его для организации асинхронного обмена сообщениями между сервисами, что позволяло разгрузить основные процессы и повысить масштабируемость.

Опыт включает:

  • Настройку очередей, обменников (exchanges) и привязок (bindings).
  • Отправку и получение сообщений с помощью библиотеки pika в Python.
  • Обработку подтверждений доставки (acknowledgements) и повторную попытку обработки сообщений.
  • Использование различных типов обменников: direct, topic, fanout для разных сценариев маршрутизации.

Пример простого отправителя и получателя на 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 RabbitMQ')
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"Получено сообщение: {body.decode()}")
    ch.basic_ack(delivery_tag=method.delivery_tag)

channel.basic_consume(queue='task_queue', on_message_callback=callback)
channel.start_consuming()

RabbitMQ помогал обеспечить надежную доставку сообщений и масштабируемость приложений.