【问题标题】:How to configure NServiceBus with two RavenDB IDocumentStores?如何使用两个 RavenDB IDocumentStore 配置 NServiceBus?
【发布时间】:2014-11-07 10:18:57
【问题描述】:

在 NSB 5 中,如何使用 autofac 容器正确配置 NSB,其中一个 IDocumentStore 用于 NSB 数据,一个单独的 IDocumentStore 用于应用程序数据?我在下面粘贴了 EndpointConfig 的相关部分:

            // Raven DataStore for Freight system
        var appDataStore = new DocumentStore { 
            ConnectionStringName = "RavenDB",
            DefaultDatabase = "ApplicationData"
        };
        appDataStore .Initialize();

        // Raven DataStore for NServiceBus
        var nsbDataStore = new DocumentStore
        {
            ConnectionStringName = "NServiceBus.Persistence",
            DefaultDatabase = "BookingProcessing"
        };
        nsbDataStore.Initialize();

        // Set up and build AutoFac container
        var builder = new ContainerBuilder();
        builder.RegisterInstance<DocumentStore>(appDataStore ).As<IDocumentStore>().SingleInstance();
        var container = builder.Build();

        // Set up NServiceBus
        configuration.UseContainer<AutofacBuilder>(customizations => customizations.ExistingLifetimeScope(container));
        configuration.UsePersistence<RavenDBPersistence>().SetDefaultDocumentStore(nsbDataStore);

我知道这不起作用,因为我在 another question 中存储 sagas 时遇到问题。 SagaPersister 试图在 appDataStore 中持久化 saga,但超时消息被持久化在 nsbDataStore 中。

【问题讨论】:

    标签: nservicebus nservicebus-sagas


    【解决方案1】:

    此问题现已在 NServiceBus.RavenDB v2.0.1 中修复

    【讨论】:

      【解决方案2】:

      这是sample for 4.x using unit of work, 如果你使用

      查看here 了解如何实施 IManageUnitsOfWork

      初始化是herehere for the usage

      这会有帮助吗?

      【讨论】:

      • 谢谢。我之前看过 Andreas Öhlund 的一个类似例子。这两个示例都只使用一个 DocumentStore,对吗?因此 userdata 和 NSB 数据使用相同的数据存储。我正在尝试使用两个不同的商店...顺便说一句,您的示例无法编译:“StructureMap.IContainer”类型是在未引用的程序集中定义的。您必须添加对程序集“StructureMap,Version=2.6.4.0,Culture=neutral,PublicKeyToken=e60ad81abae3c223”的引用。我将结构映射升级到最新的 NuGet 版本,没有运气
      • 让我更新示例以反映您的用例并改用 autofac。
      • 我添加了一个V5 with autofac sample,如果这对你有用,请告诉我...
      • (在 NSB 组中也有评论)。该示例有效,但是当我实现一个 saga 时,它仍会将 saga 数据存储在应用程序数据库中,而不是 NSB 端点定义的数据库中。这是设计使然吗?我更愿意将 NSB 中的所有内容与我的应用程序数据保持在同一个数据库中。虽然可以说传奇是应用程序数据......
      • 这是一个bug,解决方法(由Szymon提供)在这里:groups.google.com/d/msg/particularsoftware/B0LSO5MYbpo/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多