2016-10-31 5 views
1

ソリューションをNServiceBus 5から6にアップグレードしようとしています。現在、サービスクラスにIBusを注入しています。必要に応じてバス。今度はIBusは6で使用できなくなりました。NServiceBus.Hostを使用してエンドポイントが作成されたときにエンドポイントインスタンスを挿入するにはどうすればいいですか?NServiceBus.Host - IoCコンテナにエンドポイントインスタンスを追加するには

var endpointConfiguration = new EndpointConfiguration("Samples.MultiHosting.Instance1"); 
endpointConfiguration.UseSerialization<JsonSerializer>(); 
endpointConfiguration.EnableInstallers(); 
endpointConfiguration.UsePersistence<InMemoryPersistence>(); 
endpointConfiguration.SendFailedMessagesTo("error"); 
return Endpoint.Start(endpointConfiguration); 

しかし、それはすぐに、これはセルフホスティングとNServiceBus.Hostを使用していない場合のみ可能です」を示すノートが続きます。

https://docs.particular.net/samples/hosting/multi-hosting/の底部に設け例があります。 "

答えて

7

IWantToRunWhenEndpointStartsAndStops実装を使用して、バスの開始後にサービスクラスにIMessageSessionを注入します。 https://docs.particular.net/nservicebus/upgrades/host-6to7#iwanttorunwhenendpointstartsandstops-interface-in-version-7-of-nservicebus-host

代替代わりにあなたは、エンドポイントのライフサイクルをより詳細に制御する必要がありますNServiceBus.Hostを使用してのNServiceBus Windows Service Bootstrapに切り替えるには、次のようになります。ここでは

はNServiceBus.Hostのためのアップグレードガイドから関連するセクションがあります。

+0

迅速な対応をありがとうございます。私は元の投稿に、IWantToRunWhenEndpointStartsAndStops.Start()内で開始されたエンドポイントを取得できるかどうか調べることを検討しました。しかし、私はこれを行う方法を見ていない。 – fcatacutan

+1

Startメソッドで渡された 'IMessageSession'はエンドポイントで、' Send'と 'Publish'へのアクセス権を与えます。 –

+0

IEndpointInstanceまたはIMessageSessionが注入される可能性を考慮してサービスクラスを修正しなければならなかったが、すべてが期待どおりに機能しているように見える。ありがとう! – fcatacutan