NServiceBus处理Autofac容器

时间:2017-03-10 17:43:53

标签: autofac nservicebus

在这里 - 忍受我:

两个Autofac 4.2.1容器:

  • Asp.NET 4.6.1 WebApi项目中的一个
  • NServiceBus 6主机中的一个

两者都拥有对JobService的IJobService引用(将作业保存到DynamoDB)。

在Visual Studio中运行项目...

如果我向第一个JobService发出WebApi请求,它会成功并向DynamoDB插入一条记录,并在总线上删除一条命令,以便NServiceBus进行拾取。

在处理Saga期间,NServiceBus再次调用JobService(可能是在第二个容器上)以保存进度。第二次调用无法插入到DynamoDB,并且生命周期已经处理完毕。如果我尝试从IComponentContext创建任何内容,我会得到:

  

无法解析实例,并且无法从此LifetimeScope创建嵌套生命周期,因为它已经被处理掉了。

NServiceBus主机正在运行AsA_Server,我在IConfigureThisEndPoint的自定义方法中注册容器。

有关如何查看生命周期被转储的位置或是否以某种方式神秘地选择错误的IJobService的任何指针?

1 个答案:

答案 0 :(得分:0)

只是关闭这个 - 我们最终重新设计了解决方案并将任何Web服务调用移动到他们自己的处理程序。这是基于此处的建议http://docs.particular.net/nservicebus/sagas这种变化以某种方式解决了这个问题。

具体来说,这个指导:

  

除了与自己的内部状态交互之外,saga不应该访问数据库,调用Web服务或访问其他资源 - 既不直接也不间接地注入这些依赖项。