az servicebus topic subscription rule create --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --subscription-name mysubscription --name myrule --sql-action-expression myproperty=myvalue
必须以不同的方式处理具有特定特征的消息。若要启用此处理,可以将订阅配置为查找具有所需属性的消息,然后对这些属性执行某些修改。虽然服务总线订阅会看到发送到主题的所有消息,但您只能将这些消息的子集复制到虚拟订阅队列。
此筛选是使用订阅筛选器完成的。这样的修改称为筛选器操作。创建订阅时,可以提供一个筛选器表达式,用于操作消息的属性,包括系统属性(例如,Label)和自定义应用程序属性(例如StoreName.)
有关完整的工作示例,请参阅GitHub上的TopicSubscriptionWithRuleOperationsSample示例。
我之所以要这样做,是因为我们的服务在部署时配置订阅规则,并且具有消息代理的服务可能会在具有订阅客户端的服务更改规则集和新的业务逻辑之前部署该服务,该服务会发送一组新的消息。我们不希望丢失在部署期间发送的消息,并在新服务退出时处理它们。 干杯。
有可能做到这一点吗?
我想将一个小的JSON消息放入中。消息将具有附加到它的“ProviderID”属性,并且根据筛选规则,该消息将被筛选到特定于提供程序的上 但是,我似乎无法在上指定共享访问策略,以限制第三方提供商仅连接到他们自己的 我假设应该在订阅上设置以便将这些消息发送到另一个并在那里应用特定于提供程序的安全性,这样做是否正确。 或者有其他/更好的/推荐的方法来做这件事。
我试图遵循Mark Heath的控制台应用程序示例,使用筛选后的订阅检索服务总线主题消息。但是,我实际上无法检索实际筛选的消息(Filtered1、Filtered2)。消息确实会被使用,但我无法查看它们,因为代码从未像处理非过滤消息(AllMessages)那样进入回调函数。对我错过了什么有什么想法吗? 发件人代码 接收机代码
我用来接收消息的代码如下: 当我运行它时得到的是下一个信息: 如果我从线程中运行接收器,它会显示这条错误消息(当跳过该超时时,我应该删除该超时,因为在等待的守护进程中它不能跳过)。基本上都是同样的错误: 更新 我认为问题出在Azure服务总线和订阅和过滤器上。实际上,我有23个过滤器,我认为Azure服务总线只工作于1个订阅:(但我不确定这一点。