当前位置: 首页 > 知识库问答 >
问题:

将RavenDB与NServiceBus Azure一起使用的正确方法

钱志强
2023-03-14

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

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

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

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

我们是否应该:

>

  • 使用NServiceBus的IManageUnitsOfWork界面在Begin()中打开DocumentSession,然后在End()中调用SaveChanges(),如果没有异常。这就是我们过去对内部部署的NServiceBus主机和MSMQ所做的,或者

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

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

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

  • 共有1个答案

    左丘元徽
    2023-03-14

    我建议选择选项#1,稍作改变——你需要在Azure中使用RavenHQ或你自己的RavenDB设置,这是高度可用的。选项#3听起来太复杂,也没有必要。NServiceBus数据已经由传输处理(通过利用存储表)。这个留档接近你想做的。

     类似资料:
    • 早上好,当对同一个json文件中定义的内容使用$ref时,我在使用ajv和json-schema时遇到了一个问题。我怀疑问题出在ids的使用上,我会更理解这一点。 我的文件是: definitions.json json

    • 问题内容: 考虑以下代码段: 显然不知道可以将a馈送到需要的方法(实际上,它的文档说它在寻找 具有指定名称和形式参数完全相同的方法 )。 是否有一种直接的方法来像上面那样以反射方式查找方法,但是要考虑多态性,以便上述反射示例在查询参数时可以找到该方法? 问题答案: 该反射教程 建议使用样本进行查找

    • 问题内容: 我刚刚开始学习Java流,并遇到了问题。请看下面的例子。这是Node类的一部分: 我的意图是在流中的每个节点上使用名称和结果参数调用#findChildren。我尝试使用方法引用Node :: findChildren时没有运气。我将不胜感激的解决方案与运营商。 是否可以将方法引用与参数一起使用?我喜欢流的想法,我只想使代码更具可读性。 实际上,我认为还有一个类似的问题,方法引用具有读

    • 我有4个片段,其中一个片段中有一个viewpager和一个不同的类,我用3个其他片段定义了viewpager的适配器,第一次打开此片段时,所有子片段都正确显示在viewpager中,但当我切换(使用transaction.replace)到另一个片段并再次返回时,子片段消失了,我不能使用ChildFragmentManager,因为它在代码中显示错误(ChildFragmentManager无法解

    • 问题内容: 我的主页上的所有页面上都有一个函数,我希望它可以通过某些jQuery Ajax方法运行。 我现在有一些这样的代码 jQuery的 母版页中的HTML 我的主VB中的Asp.Net代码 当前,除非我将Web方法移至VB页面,否则此方法不起作用 有什么办法可以改变这部分吗 要使用母版页功能? 我尝试将其更改为 但这只是给我一个404错误 有任何想法吗? 提前致谢 问题答案: 您的网络方法代

    • 问题内容: 我在DAO类中使用Spring MVC 。在这里困惑从何处开始事务,它应该在服务层还是DAO层? 我的视图与服务层交互。DAO已注入服务。 在DAO服务层体系结构中将Spring MVC与Hibernate一起使用的正确方法是什么? 问题答案: 恕我直言,交易应转到服务层。通常,一项业务交易包含多个查询和更新。如果仅放置在DAO层上,则每个查询和更新将在单独的事务中运行,这实际上违反了