RabbitMQ для имитации обмена темами с прямым обменом

Есть ли способ, которым я могу иметь прямой обмен, имитирующий обмен темами (я знаю, что можно получить противоположное: см. Здесь), но мой пример использования здесь заключается в том, что я уже развернул прямой обмен с большим количеством очередей, каждая из которых имеет ключ маршрутизации mykeyprefix.queue_name_here и то, чего я пытаюсь добиться, - это также иметь отдельную очередь, в которую все сообщения из всех других очередей попадают для дальнейшего анализа.

1 ответ

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

Учитывая, что ваше требование точно удовлетворяется с помощью обмена темами, мне любопытно, почему вы не можете просто использовать это. Вашим производителям будет все равно (поскольку они просто отправляют сообщения на Exchange), а вашим потребителям не нужно будет вносить изменения (поскольку они просто извлекают из очереди, которая может быть связана с любым типом Exchange). Что касается миграции, вы можете связать очереди с обеими биржами, а затем отсоединить их от старого прямого обмена. Когда вы перемещаете каждую очередь, вы можете удалить прямой обмен, оставив вам только тот приятный обмен темами, который вам действительно нужен.

Другие вопросы по тегам