2016-10-31 2 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