重新配置NServiceBus丢失消息

|| 这是我在StackOverflow上的第一篇文章。 我正在尝试将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似乎不起作用。     
已邀请:
@bsf的答案 我找到了解决方案。
CreateBus()
返回
IStarableBus
。如果我对它保持静态引用,并在下一次调用ѭ2dis之前将其处置,则一切似乎正常。     

要回复问题请先登录注册