Ответ
Да, есть опыт работы с RabbitMQ как брокером сообщений (AMQP).
Основные задачи и концепции:
- Настройка инфраструктуры: exchanges (direct, fanout, topic), queues, bindings.
- Публикация и потребление сообщений.
- Тестирование сценариев с Dead Letter Exchanges (DLX) и TTL (Time-To-Live).
- Работа с подтверждениями доставки (ack/nack).
Пример тестирования потребителя (consumer) на Python с pika:
import pika
import json
def test_message_consumption():
"""Тест проверяет, что потребитель корректно обрабатывает сообщение из очереди."""
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='test_orders')
# 1. Публикуем тестовое сообщение
test_message = {'order_id': 789, 'action': 'create'}
channel.basic_publish(exchange='',
routing_key='test_orders',
body=json.dumps(test_message))
# 2. Извлекаем одно сообщение для проверки
method_frame, header_frame, body = channel.basic_get(queue='test_orders', auto_ack=True)
if method_frame:
received_data = json.loads(body)
assert received_data['order_id'] == 789
print("Тест пройден: сообщение получено и валидно.")
else:
print("Ошибка: сообщение не найдено в очереди.")
connection.close()
Почему это важно для QA: Тестирование асинхронных систем требует проверки гарантий доставки, порядка сообщений и обработки ошибок (например, через DLX).