我使用项目的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
}
有更快的方法吗?
例如,如果他没有找到接收器,是否有办法在另一个队列中将消息发送到另一个队列?
答案 0 :(得分:1)
你在做什么是错的。创建主题以分离发布者和订阅者。如果订阅者存在与否,您的发布商应不关注事实。广播事件,因此如果没有找到听众,这些信息就无处可去。
设置主题设置为TopicDescription.EnableFilteringMessagesBeforePublishing
,当设置为true
时,如果没有能够处理消息的订阅,则会NoMatchingSubscriptionException
异常。用于生产的不。