在 Azure Service Buus 上使用 NServiceBus 进行重复检测
Duplicate detection with NServiceBus on Azure Service Buus
我正在使用 NServiceBus 作为 Azure 服务总线的抽象层(以防我们离开 Azure)。我发现当与多个订阅者(订阅相同事件的订阅者)一起工作时,重复消息的数量会增加。我知道 Azure 服务总线 (ASB) 有一种检测这些重复项的方法,我可以看到该功能可通过 NServiceBus 配置(根据文档)。但是,我只能通过配置部分获得实现重复检测的示例。我需要的是如何使用代码实现此目的的示例。
谢谢
苏拉吉
您也可以使用基于代码的方法指定配置。 NServiceBus 必须签订可以帮助 IConfigurationSource
和 IProvideConfiguration<T>
的合同。下面是 an example 如何获取配置文件部分 (UnicastBusConfig
) 并通过代码指定值。
具体针对您的要求,实施 IProvideConfiguration<AzureServiceBusQueueConfig>
将允许您 configure ASB transport,指定重复项等。
关于订阅者增加导致重复数量增加的观察感觉是一种症状,而不是问题。那可能是一个不同的问题,与配置无关。话虽如此,我会在启用本机重复数据删除之前对其进行调查。虽然您可以指定 RequiresDuplicateDetection
和 DuplicateDetectionHistoryTimeWindow
,但请注意 ASB 仅对 ID 属性 执行重复检测。此外,最好将处理程序构建为幂等的,而不是依赖本机重复数据删除。
我正在使用 NServiceBus 作为 Azure 服务总线的抽象层(以防我们离开 Azure)。我发现当与多个订阅者(订阅相同事件的订阅者)一起工作时,重复消息的数量会增加。我知道 Azure 服务总线 (ASB) 有一种检测这些重复项的方法,我可以看到该功能可通过 NServiceBus 配置(根据文档)。但是,我只能通过配置部分获得实现重复检测的示例。我需要的是如何使用代码实现此目的的示例。
谢谢
苏拉吉
您也可以使用基于代码的方法指定配置。 NServiceBus 必须签订可以帮助 IConfigurationSource
和 IProvideConfiguration<T>
的合同。下面是 an example 如何获取配置文件部分 (UnicastBusConfig
) 并通过代码指定值。
具体针对您的要求,实施 IProvideConfiguration<AzureServiceBusQueueConfig>
将允许您 configure ASB transport,指定重复项等。
关于订阅者增加导致重复数量增加的观察感觉是一种症状,而不是问题。那可能是一个不同的问题,与配置无关。话虽如此,我会在启用本机重复数据删除之前对其进行调查。虽然您可以指定 RequiresDuplicateDetection
和 DuplicateDetectionHistoryTimeWindow
,但请注意 ASB 仅对 ID 属性 执行重复检测。此外,最好将处理程序构建为幂等的,而不是依赖本机重复数据删除。