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