共享服务提供商NServiceBus和ASPNET核心

共享服务提供商NServiceBus和ASPNET核心,nservicebus,Nservicebus,我正在创建一种通过NServiceBus发布集成事件的方法,这些事件是从处理程序中执行的操作中发布的。我选择的路径是将iintegrationventprovider与IEventCollectionPublisher连接起来,从域层获取发布的事件 公共密封类网桥:IIntegrationEventProvider/*Infrastructure*/,, IEventCollectionPublisher/*域*/ { 私有只读列表_events=new List(); void IEventC

我正在创建一种通过NServiceBus发布集成事件的方法,这些事件是从处理程序中执行的操作中发布的。我选择的路径是将
iintegrationventprovider
IEventCollectionPublisher
连接起来,从域层获取发布的事件

公共密封类网桥:IIntegrationEventProvider/*Infrastructure*/,,
IEventCollectionPublisher/*域*/
{
私有只读列表_events=new List();
void IEventCollectionPublisher.Publish(对象域事件){{u events.Add(域事件):}
IReadOnlyCollection IIintegrationEventProvider.GetEvents()=>\u事件;
}
由于NServiceBus有自己的服务提供程序(
IBuilder
),我需要从
IServiceProvider
解析执行应用程序操作的类,该类在
ServiceScopedBehavior
中提供给管道。通过这样做,我可以获得包含从域层发布的事件的网桥实例,并使用NServiceBus将它们发布为集成事件

我发表了一篇文章,其中(希望)包含了掌握我试图实现的目标所需的代码片段

问题是:我是否可以指示NServiceBus将调用委托给应用程序服务提供商,而不是构建它,并复制
endpoint.UserContainer()
中的所有指令?下面是一个例子

内部密封类处理程序:IHandleMessages
{      
公共异步任务句柄(命令消息,IMessageHandlerContext)
{
//从ASPNET DI解析
var useCase=context.GetService();
//_useCase是从构造函数注入的NSB DI解决的
Assert(ReferenceEquals(useCase,_useCase),“”);
wait useCase.Execute().configurewait(false);
}
}
通过这种方式,我可以在处理程序构造函数中注入正确的作用域应用程序类,而不是从
IServiceProvider
提供的作用域中解析它,该作用域可从
context.Extensions.Get().ServiceProvider
获得

谢谢你的帮助


我想这会有用的。从7.2版开始,在ASP.NET和NServiceBus之间共享DI基础设施要简单得多。还有一个专门添加了
UseNServiceBus
API的示例。

这个示例就是我想要的。期待发布日期,希望下周。谢谢,我们刚刚发布了一个帮助包来进一步简化事情