如何使用NserviceBus实现数据预加载?

时间:2010-12-22 10:31:59

标签: nservicebus

我使用NserviceBus为我的主应用程序实现一些插件。主要应用是一个网站。在启动期间,插件需要从主应用程序(即所有用户)检索一些数据,然后处理对此数据的任何更改。为了始终拥有最新数据。

我看到的问题是我们异步预加载数据,所以虽然预加载我无法处理来自主应用程序的任何更改,因为插件仍未设置。

如何使用NserviceBus实现此方案?我的意思是如何在预加载完成之前延迟消息处理。这似乎是常见的问题,所以解决方案应该很简单,但我找不到一个简单的方法。

2 个答案:

答案 0 :(得分:1)

难道你不能在NSB中使用Saga跟踪所有预加载,然后确保所有处理程序在尝试处理应用程序更改消息之前验证没有Saga正在进行中吗?

答案 1 :(得分:0)

您可以手动配置总线,并在加载数据后启动它:

bus = Configure.With()
    .StructureMapBuilder(ObjectFactory.Container)
    .XmlSerializer()
    .MsmqTransport()
        .IsTransactional(true)
        .PurgeOnStartup(false)
    .MsmqSubscriptionStorage()
    .Sagas()
    .UnicastBus()
        .ImpersonateSender(false)
    .CreateBus()
    .Start();

这只是一个例子。你必须自己编辑配置。

对于替代方案,请发布有关数据性质的更多详细信息以及使用它们进行的转换。