2012-12-10 47 views
0

我已經建立了一個NSB網關演示項目,所有工作正常。 (SiteA發送msg給SiteB,SiteB回覆確認。ie.Bus.Reply())NServiceBus網關IOC和MessageHandler問題

然後我繼續使用.CatleWindsorBuilder()而不是.DefaultBuilder()。 主要工作,得到我的自定義類型注入。但是,在SiteB上Bus.Reply()時引發異常。

Bus.Reply<CustomerOrderReceived>(m => { m.BranchOffice = "US"; m.Description = message.Description; }); 

唯一的例外是:「沒有處理可以找到消息類型:CustomerOrderReceived」 這聽起來像它無法找到站點A的OrderReceivedMessageHandler : IHandleMessages<CustomerOrderReceived>

這裏的站點A的EndpointConfig

_container = new WindsorContainer(); 

     Configure.With() 
      .CastleWindsorBuilder(_container) 
      .XmlSerializer() 
      .MsmqTransport().IsTransactional(true) 
      .FileShareDataBus(".\\databus").UnicastBus().ImpersonateSender(false).LoadMessageHandlers(); 

     _container.Register(Component.For<IOrderTask>().ImplementedBy<OrderTask>()); 
     _container.Register(Component.For<IWindsorContainer>().Instance(_container)); 
     _container.Install(FromAssembly.InThisApplication()); 

然而, SiteA中的消息處理程序都可以正常工作。

想知道是否有人在NSB的城堡溫莎國際奧委會的工作樣本?我在Google上找不到任何有用的東西。

+0

使用CastleWindsorBuilder()時,處理器在從SiteA的Bus.SendLocal(新的CustomerOrderConfirmed())時正常工作。只有當來自SiteB的Bus.Reply()時拋出異常「處理程序不能找到」。我幾乎認爲這是一個NSB的錯誤? – Luc

+0

哪個版本的NSB是這個?如果您將其配置更改爲使用.CastleWindsorBuilder(),那麼NSB附帶的網關示例是否可以正常工作? –

+0

我上週下載了它,它是最新的3.3.3這個概念驗證演示基本上是基於nsb安裝程序的網關示例。當使用DefaultBuilder()時,所有的工作都很漂亮。但更換WindsorBuilder時,我得到了這個煩人的故障。堅持了2天。想知道這是否是NSB錯誤?您是否有任何使用WindsorBuilder for Gateway方案的工作示例?或者你能建議一個更好的IOC來使用嗎?即。 StructureMapBuilder? – Luc

回答

0

Got已完成!通過使用StructureMapBuilder()

但是,現在我相信這是處理網關場景中的Bus.Reply()時的NSB錯誤。

+0

謝謝Luc我們正在研究它。我會在這裏報告結果 –