使用MsmqSubscriptionStorage时,NServiceBus 2.0丢失首次发布的消息

时间:2011-06-23 18:25:21

标签: nservicebus

我在pub / sub场景中使用MsmqSubscriptionStorage,并且在尚未存储订阅时丢失第一条消息。如果我观察调试消息,在GenericHost中运行时,我看到所有订阅都已设置,但第一条消息从未发送给订阅者。如果发送了更多消息,则它们会成功发送给订户(如日志中所示)

我使用的是2.0.0.0版。

这是我正在使用的总线配置。

var bus = Configure.With(
    new List<Assembly>
    {
        typeof(Configure).Assembly,
        typeof(IBus).Assembly
    })
    .DefaultBuilder()
    .Log4Net()
    .XmlSerializer()
    .MsmqTransport()
        .IsTransactional(true)
        .PurgeOnStartup(false)
    .UnicastBus()
        .ImpersonateSender(false)
        .LoadMessageHandlers()
    .MsmqSubscriptionStorage()
    .CreateBus()
    .Start();

2 个答案:

答案 0 :(得分:1)

我正在回答自己的帖子,所以没有人看到这个问题,并得出结论NServiceBus有问题。对我而言,这是一个GCE - (Gross Conceptual Error)。我的托管环境是推迟对总线的静态引用的解析。更改我的进程初始化以在启动时设置静态总线引用可以解决问题。

答案 1 :(得分:0)

如果您在注册任何订阅之前发布这些消息将没有目的地,将被忽略。您可能希望查看数据库订阅存储,以减少瞬态。