這是我在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似乎不起作用。