Самый быстрый способ узнать, будет ли получено сообщение BrokeredMessage из темы получателем подписки - PullRequest
0 голосов
/ 26 апреля 2018

Я работаю с лазурными Темами / Подписками на проект. И я хочу найти самое быстрое решение, чтобы узнать, будет ли BrokeredMessage получено по крайней мере 1 подпиской.

Я нашел базовое решение: Прежде чем отправить сообщение, я вызываю метод GetRules для итерации через SQL-фильтры:

var rules = NamespaceMgr.GetRules("topict1", s.Name);
foreach (var ruleDescription in rules)
{
     Console.Write(ruleDescription.Name);
     var filter = ruleDescription.Filter as SqlFilter;
     if(filter != null)
     {
          expressions.Add(filter.SqlExpression);
     }
     //...examine exisitngs expressions to know if the message will be handled by a subscription receiver
}

Есть ли более быстрый путь?

Например, есть ли способ мгновенно отправить сообщение в другую очередь, если он не нашел отправителя?

1 Ответ

0 голосов
/ 26 апреля 2018

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

Существует настройка темы, TopicDescription.EnableFilteringMessagesBeforePublishing, которая при значении true выдаст исключение NoMatchingSubscriptionException, когда нет подписок, которые могли бы обработать сообщение. не предназначен для производства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...