.net - 如何防止使用自定义订阅规则的 NServiceBus 引发错误 "a sql filter does not match the subscribed eventtype"?

标签 .net azure nservicebus

我已使用自定义 Fitler 预先配置了 Azure 订阅,以供我的 NServiceBus 端点连接。

Filter = [NServiceBus.EnclosedMessageTypes] LIKE '%ContractName%' AND Property = 'true'

我从 NServiceBus 收到以下严重错误:

Looks like this subscriptionname is already taken by another logical endpoint as the sql filter does not match the subscribed eventtype, please choose a different subscription name!

NServiceBus 将添加自己的规则,这是我围绕合约名称所拥有的规则的更详细版本。

即使我添加与 NServiceBus 在订阅先前不存在的情况下创建的完全相同的过滤器并添加我的自定义过滤器,它仍然会提示。

Filter = <generated by NServiceBus> AND Property = 'true'

自定义属性过滤器是为了防止订阅从繁忙的主题获取它不关心的消息并导致不必要的处理忽略它们。

有人知道我是否可以告诉 NServiceBus 过滤器没问题并且可以继续吗?

我正在使用 NServiceBus 4.6.5 和 NServiceBus.Azure 5.3.5

最佳答案

异常发生时

  1. 给定主题 ( link ) 已存在具有给定名称的订阅
  2. 用于订阅的 SQL 过滤器与 NSB 生成的 SQL 过滤器不同 ( link )

订阅名称是事件名称。如果您碰巧有一个 Default 事件,这将是一个问题。尝试将您的自定义订阅重命名为不与事件名称冲突的名称。这样您就可以使用您的自定义规则进行订阅。如果您需要 NSB 创建的过滤器部分,您可以利用 ServicebusSubscriptionFilterBuilder为此。

旁注,您使用的是 NSB 4.6.5。支持版本 4.x has expired这个月。您可能想考虑升级您的版本。

关于.net - 如何防止使用自定义订阅规则的 NServiceBus 引发错误 "a sql filter does not match the subscribed eventtype"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38504428/

相关文章:

azure - 如何保证azure队列的先进先出

azure - 如何将 VS2012 Azure 云服务项目迁移到 VS2013

SignalR(原始)不向客户端发送消息

servicestack - 在可移植类库 PCL 中包含 NServiceBus 消息

.net - 如何将 .NET WebSocket 客户端与 NTLM 代理结合使用?

javascript - 从 Javascript 调用托管在不同服务器上的 WCF

c# - 获取 DataTable 列数据类型

c# - 部署到 Azure 后不显示单个图像

c# - NServiceBus 命令处理程序中的生产者/消费者

c# - 引用数据表 C# 更新 SQL 表的最佳方法