最快的方式来了解订阅接收者是否会收到来自Topic的BrokeredMessage

时间:2018-04-26 15:42:13

标签: azure azureservicebus azure-servicebus-queues azure-servicebus-topics

我使用项目的azure主题/订阅。 我想找到最快的解决方案,知道至少1次订阅是否会收到BrokeredMessage。

我找到了一个基本的解决方案: 在发送消息之前,我调用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 :(得分:1)

你在做什么是错的。创建主题以分离发布者和订阅者。如果订阅者存在与否,您的发布商应关注事实。广播事件,因此如果没有找到听众,这些信息就无处可去。

设置主题设置为TopicDescription.EnableFilteringMessagesBeforePublishing,当设置为true时,如果没有能够处理消息的订阅,则会NoMatchingSubscriptionException异常。用于生产的