问题描述
|
我在发布/订阅方案中使用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();
解决方法
我正在回答自己的帖子,所以没有人看到此问题,并得出结论NServiceBus有问题。这是我的GCE-(重大概念错误)。我的托管环境推迟了对总线静态引用的解析。更改过程的初始化以在启动时设置静态总线参考即可解决该问题。
, 如果您在注册任何订阅之前进行发布,则这些消息将没有目的地,将被忽略。您可能需要查看数据库订阅存储,以减少瞬态。