Sobes.tech
Back to questions
Junior — Middle
50

Имели ли вы опыт настройки и использования маршрутизации сообщений в RabbitMQ?

Answer from AI

sobes.tech AI

В RabbitMQ маршрутизация сообщений осуществляется с помощью обменников (exchanges) и очередей (queues). Основные типы обменников — direct, topic, fanout и headers, каждый из которых маршрутизирует сообщения по-разному.

Например, direct exchange направляет сообщение в очередь, если ключ маршрутизации (routing key) совпадает с привязанным ключом очереди. Topic exchange позволяет использовать шаблоны с подстановочными знаками для более гибкой маршрутизации.

Пример на Python с использованием библиотеки pika:

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.exchange_declare(exchange='logs', exchange_type='topic')

result = channel.queue_declare('', exclusive=True)
queue_name = result.method.queue

binding_key = 'kern.*'
channel.queue_bind(exchange='logs', queue=queue_name, routing_key=binding_key)

def callback(ch, method, properties, body):
    print(f"Received {body.decode()}")

channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)

print('Waiting for messages...')
channel.start_consuming()

В этом примере создаётся topic exchange, очередь привязывается с ключом маршрутизации, и потребитель получает сообщения, соответствующие шаблону kern.*.