2016-07-27 24 views
1

в RabbitMQ далиRabbitMQ Обмен с уловом все

  • обмен
  • две очереди по имени по умолчанию и конкретные
  • две маршрутизации ключей all.specific и все. *

со следующей схемой

enter image description here

Я пытаюсь выполнить следующие действия (без успеха)

  • если сообщение с ключом маршрутизации «all.specific» прибывает должен быть направлен на конкретной queue

  • если сообщение с ключом маршрутизации «all.generic» прибывает, должно быть направлено на по умолчанию очереди

Я попробовал два разных approaces

1) обмен типа «прямой»

Я не могу использовать подстановочные знаки в ключе маршрутизации, так что я не могу маршрут «all.generic», «все .another_generic»и многие другие входящие сообщения

2) обмен типа 'тему'

It маршруты 'all.generic', 'all.another_generic' -г efault queues, но «all.specific» приходит в обе очереди, поэтому я хочу, чтобы была достигнута только определенная очередь.

Я думаю, что я использую неправильный путь обмена и очередей, но я не могу понять, как реализовать это в правильном направлении rabbitmq. Вы можете мне помочь?

ответ

2

Ваш лучший вариант для этого не будет отображаться в привязках и клавишах маршрутизации.

Я бы посмотрел на альтернативные биржи.

https://www.rabbitmq.com/ae.html

С AE, вы можете в основном есть «поймать всех» обмен на любые сообщения, которые не соответствуют одной из привязок в обмене, где она была опубликована.

в вашем случае, ваш обмен будет иметь обязательную привязку all.specific для отправки сообщений в очередь specific.

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

Смежные вопросы