ОК, основываясь на комментариях, вот предложение, которое будет масштабироваться и не требует особых изменений в приложениях.
Со стороны производителя я бы скопировал критерии выбора сообщения в свойство сообщенияа затем опубликовать сообщение в теме.Единственное изменение, которое требуется здесь для приложения, - это свойство сообщения.Если по какой-то причине вы не хотите, чтобы он публиковался с использованием встроенной функциональности, вы можете определить псевдоним для темы.Приложение думает, что отправляет сообщения, но на самом деле это публикации.
На потребительской стороне у вас есть несколько вариантов.Одним из них является создание административных подписок для каждого приложения и использование селектора в подписке.Затем сообщения направляются в выделенную очередь для каждого потребителя на основе критериев выбора.Приложения считают, что они просто потребляют сообщения.
Кроме того, приложение может просто подписаться на тему.Это дает вам возможность динамической подписки, которая не получает сообщения, когда приложение отключено (если на самом деле вы этого хотели), или долговременную подписку, которая функционально эквивалентна административной подписке.легко масштабировать до объемов, которые вы указали.Другой вариант заключается в том, что производитель не использует свойства.Здесь потребительское приложение потребляет все сообщения, разбивает полезную нагрузку на каждое сообщение и решает, обрабатывать ли сообщение или игнорировать его.В этом решении производитель все еще публикует тему.Любое решение, включающее прямые очереди, заставляет производителя знать все пункты назначения.Добавьте другого потребителя, измените производителя.Кроме того, есть PUT для каждого пункта назначения.
В худшем случае производитель отправляет несколько сообщений, а потребитель должен прочитать каждое из них, чтобы решить, будет ли оно проигнорировано.Эта опция может иметь проблемы с масштабированием, в зависимости от того, насколько глубоко в полезной нагрузке находится поле критериев выбора.Действительно длинное выражение XPath = низкая производительность и отсутствие способа настройки WMQ, чтобы компенсировать это, поскольку в этот момент все время задержки в приложении.
В лучшем случае производитель устанавливает свойство сообщения и публикует.Потребители выбирают собственность в своей подписке, или административная подписка делает это для них.Независимо от того, использует ли это решение подписки на приложения или административные подписки, масштабирование не имеет значения.