我在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();
答案 0 :(得分:1)
我正在回答自己的帖子,所以没有人看到这个问题,并得出结论NServiceBus有问题。对我而言,这是一个GCE - (Gross Conceptual Error)。我的托管环境是推迟对总线的静态引用的解析。更改我的进程初始化以在启动时设置静态总线引用可以解决问题。
答案 1 :(得分:0)
如果您在注册任何订阅之前发布这些消息将没有目的地,将被忽略。您可能希望查看数据库订阅存储,以减少瞬态。