我已使用自定义 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
最佳答案
异常发生时
订阅名称是事件名称。如果您碰巧有一个 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/