1

我们有一个数据加载器服务,它使用 NServiceBus 将数据(如果不存在)插入 SQL DB。队列配置为 Concurrencylevel > 1,因为要加载的数据可能会变得很大。由于 Concurrencylevel > 1,它会导致重复插入。有没有办法在 NServiceBus 中处理这个问题。

注意:我们已经考虑并排除了创建线程安全锁

4

1 回答 1

0

一般来说,不需要运行并发级别为 1 的端点。当涉及到 NServiceBus 时,您也不需要管理线程和处理并发/锁。关于系统需要如何设计以使其工作,还有其他因素:

  • 不同的传输具有不同级别的事务支持。选择一个支持事务的。这意味着如果重试消息,您将不会收到重复的消息/数据。

  • 尝试使您的系统具有幂等性。这意味着如果您处理两次消息,由于缺少事务(传输不支持或代码禁用),您将不会有多个数据/副作用。“如何”部分需要更好地了解您正在处理的数据和您的领域。

于 2017-08-13T07:50:33.347 回答