Как настроить тему служебной шины Azure с помощью NoMatchingSubscriptionException и подписки AuditTrail

Мне нужна подписка, на которую будут приходить все сообщения, отправленные в тему. И мне нужна подписка, которая будет получать все сообщения, не соответствующие фильтру в других существующих подписках. Я могу получить одно или другое, но не оба одновременно.

В базовых примерах создания темы с подпиской подписка имеет правило по умолчанию с фильтром 1 = 1. т.е. все сообщения, отправленные в эту тему, попадут в эту подписку. Примеры показывают, что эту подписку можно использовать в качестве контрольного журнала для этой подписки. Но если вы соблюдаете это правило, то установить EnableFilteringMessagesBeforePublishing с помощью NoMatchingSubscriptionException невозможно.

Возможен ли следующий сценарий?

PostTopic
- Subscription-MessageType-Known получает все сообщения, для которых установлено свойство MessageType. - Subscription-NoFilter-Matched получает все сообщения, которые не соответствуют никакому другому фильтру по этой теме - Subscription-Audit-Trail получает все сообщения, отправленные в эту тему


person Paul Rowland    schedule 28.02.2014    source источник


Ответы (1)


Это невозможно из коробки. Единственный способ сделать это - проявить творческий подход к фильтрам для себя. Итак, у вас есть «известные фильтры», а затем сложный агрегированный фильтр для составления, который соответствует только тогда, когда другие не совпадают.

Еще одна вещь, которую мы делали в прошлом (и где мы контролировали сторону отправителя!), Заключалась в кэшировании фильтров по теме, в которую мы отправляли. И сначала сопоставить наше сообщение с этими фильтрами (на стороне клиента). Если у нас было совпадение, мы знали, что у нас есть подписка, если нет, мы могли бы использовать свою определенную логику. Однако это подходит только в том случае, если вы можете жить с небольшими накладными расходами на производительность и если вы контролируете сторону отправки ...

HTH

person Sam Vanhoutte    schedule 28.02.2014