我正在尝试将解决方案从NServiceBus 5升级到6.目前,我们正在将IBus注入服务类,以便服务可以根据需要向总线发送消息。现在,在6中不再提供IBus,如何在使用NServiceBus.Host创建端点时注入端点实例,NServiceBus.Host本身将启动此端点?
https://docs.particular.net/samples/hosting/multi-hosting/底部提供了一个示例:
var endpointConfiguration = new EndpointConfiguration("Samples.MultiHosting.Instance1");
endpointConfiguration.UseSerialization<JsonSerializer>();
endpointConfiguration.EnableInstallers();
endpointConfiguration.UsePersistence<InMemoryPersistence>();
endpointConfiguration.SendFailedMessagesTo("error");
return Endpoint.Start(endpointConfiguration);
然而,紧接着是一个注释,表示&#34; 只有在自托管且不使用NServiceBus.Host 时才有可能。&#34;
答案 0 :(得分:7)
在总线启动后,使用IWantToRunWhenEndpointStartsAndStops
实现为服务类注入IMessageSession
。
以下是NServiceBus.Host升级指南中的相关部分: https://docs.particular.net/nservicebus/upgrades/host-6to7#iwanttorunwhenendpointstartsandstops-interface-in-version-7-of-nservicebus-host
另一种方法是切换到NServiceBus Windows Service Bootstrap,而不是使用NServiceBus.Host,您可以更好地控制端点的生命周期。