Проектирование маршрутизации сообщений в RabbitMQ - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу разработать политику округления для нескольких компонентов:

    //  | exchange     | type  | routing key                | queue                        |
    //  |--------------|-------|----------------------------|------------------------------|
    //  | processing   | topic | processing.trx.elavon      | processing-elavon-sale       |
    //  | processing   | topic | processing.trx.elavon      | processing-elavon-authorize  |
    //  | processing   | topic | processing.trx.elavon      | processing-elavon-capture    |
    //  | processing   | topic | processing.trx.genesis     | processing-genesis-sale      |

Я пробовал с Тематическим обменом и Прямым обменом, но получаю ошибку Reply received after timeout.После расследования выясняется, что я отправляю сообщения в 1 очередь, но 2 очереди отправляют сообщения.

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

Но, похоже, этот дизайн не подходит.

Какая политика маршрутизации должна быть более подходящей, чтобы избежать ошибки: Reply received after timeout?Только одна очередь должна получить сообщение и ответить.

РЕДАКТИРОВАТЬ:

В моем случае я использую Spring AMQP для отправки сообщений:

convertSendAndReceive(
        ContextServer.EXCHANGE_PROCESSING, ContextServer.ROUTING_KEY_PROCESSING_TRANSACTION_ELAVON, "some_payload");

Но как я могу добраться толькоодна очередь processing-elavon-sale, не все очереди связаны с ключом маршрутизации processing.trx.elavon?

...