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.*.