这是我在StackOverflow上的第一篇文章。重新配置NServiceBus丢失消息
我试图把NServiceBus,看起来像下面的界面背后:
interface IMessagingService
{
IObserver<T> RegisterPublication<T>() where T : IPublishedMessage;
IObservable<T> RegisterSubscription<T>() where T : IPublishedMessage;
}
为了支持此接口不强迫用户有一个外显调用start(),我需要重新配置总线每次RegisterSubscription被调用,有一个方法的调用看起来像这样:
IBus ConfigureBus()
{
Configure config = BuildConfiguration();
return config.CreateBus().Start();
}
我不能复制和粘贴实际的代码,但希望你能看到,我需要有一个开始总线监听消息一旦RegisterSubscription被调用。我需要在随后的调用中添加订阅者。
我遇到的问题是每次调用ConfigureBus()似乎都旋转了更多线程并导致消息丢失。我的处理程序实例没有被调用,但NServiceBus记录完成处理每个消息。 通过四次调用RegisterSubscription,我失去了大约40%的消息。
有没有一种安全的方式来重新配置和重新启动IBus,而不会导致这个问题? IBus.Subscribe似乎不起作用。