Ответ
Да, можно, но с оговорками. Брокер (например, RabbitMQ, Kafka) обычно используется для асинхронного взаимодействия, но можно эмулировать синхронность через Request-Reply паттерн.
Пример с RabbitMQ:
# Клиент отправляет запрос с временной очередью для ответа
channel.queue_declare(queue='request_queue', exclusive=True)
channel.basic_publish(
exchange='',
routing_key='request_queue',
properties=pika.BasicProperties(reply_to='temp_reply_queue'),
body='request_data'
)
# Сервер обрабатывает и отвечает в указанную очередь
def callback(ch, method, props, body):
ch.basic_publish(
exchange='',
routing_key=props.reply_to,
body='response_data'
)
Нюансы:
- Латентность выше, чем у прямого HTTP-вызова
- Требуется обработка таймаутов
- Усложняется отладка
Подходит для сценариев, где важна гарантированная доставка, а не минимальная задержка.