【问题标题】:Correct way to use RavenDB with NServiceBus Azure将 RavenDB 与 NServiceBus Azure 一起使用的正确方法
【发布时间】:2014-09-12 06:08:11
【问题描述】:

我们在 Azure 辅助角色中运行 NServiceBus 4.6,使用 Azure 存储队列作为传输。

我们很高兴使用默认的 Azure 表存储持久化器存储 NServiceBus 相关数据(sagas、订阅等)。

但是,我们希望将业务实体存储在 RavenDB 中,以利用查询和 Raven 的其他功能。

鉴于 Azure 缺乏事务支持 - 在我们的处理程序中配置 NServiceBus 和使用 Raven 的 IDocumentStore / IDocumentSession 的最佳方式是什么。我们希望确保在发生异常时不会丢失任何数据。

我们应该:

  • 使用NServiceBus的IManageUnitsOfWork接口在Begin()中打开一个DocumentSession,然后在没有异常的情况下在End()中调用SaveChanges()。这就是我们过去对本地 NServiceBus 托管和 MSMQ 所做的事情,或者

  • 在我们的每个处理程序中打开一个新的DocumentSession,并尽快显式调用SaveChanges()。这个选项需要确保我们所有的处理程序都是幂等的。

  • 在 RavenDB 中存储所有内容,包括业务实体和 NServiceBus 数据。这将避免 Azure 表存储,并希望以原子方式存储我们的数据。

推荐的配置是什么?还有什么需要考虑的吗?

【问题讨论】:

    标签: c# azure ravendb nservicebus


    【解决方案1】:

    我建议使用选项 #1 并稍作更改 - 您需要在 Azure 中使用 RavenHQ 或您自己的高度可用的 RavenDB 设置。选项#3 听起来太复杂和不必要。 NServiceBus 数据已经由传输处理(通过利用存储表)。 This documentation 接近你想要做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2011-10-05
      • 2015-03-18
      • 1970-01-01
      相关资源
      最近更新 更多