MassTransit、Autofac和2辆公交车实例
我遇到的情况是,出版商和消费者坐在同一个应用程序中。我用的是自动传真机 据我所知,我需要2个总线实例和2个端点,一个用于发布服务器,一个用于订阅服务器 我正在使用autofac,但我不知道如何创建2个总线实例,每个实例都有自己的订阅类(应该由autofac解决)。在JEE/CDI中,我会使用限定符,但就我所见,autofac没有类似的限定符(并且命名服务不是自动连接的) 所以基本上我有两个问题:MassTransit、Autofac和2辆公交车实例,autofac,masstransit,Autofac,Masstransit,我遇到的情况是,出版商和消费者坐在同一个应用程序中。我用的是自动传真机 据我所知,我需要2个总线实例和2个端点,一个用于发布服务器,一个用于订阅服务器 我正在使用autofac,但我不知道如何创建2个总线实例,每个实例都有自己的订阅类(应该由autofac解决)。在JEE/CDI中,我会使用限定符,但就我所见,autofac没有类似的限定符(并且命名服务不是自动连接的) 所以基本上我有两个问题: 注册2个总线实例,每个实例都有一组不同的订户 稍后找到正确的实例 有什么提示可以这样做吗?它使用
- 注册2个总线实例,每个实例都有一组不同的订户
- 稍后找到正确的实例
有什么提示可以这样做吗?它使用命名实例
builder.Register(c => new FooImpl())
.As<IFoo>()
.Named("Foo1");
builder.Register(c=>newfooimpl())
.As()
.命名为(“Foo1”);
然后
container.ResolveNamed(“Foo1”);
如果我的Autofac语法是正确的,我会从头开始。这至少会让你走上正确的道路。只需请求每个IServiceBus的一个实例,以便从您的容器中解析和创建它们
哦,您不能使用LoadFrom
注册消费者。您必须手动解决并注册每个问题。因为调用LoadFrom
将注册容器中的所有使用者
您可以创建两个子容器,每个
IServiceBus
一个子容器,但是现在我们已经远远超出了我所知道的如何使用Autofac来完成的领域。您可以使用几乎任何其他容器来执行此操作,因此我假设您可以使用Autofac 如果你看一下RapidTransit项目,它有使用MassTransit和Autofac的建筑服务的图书馆。您还可以从NuGet为Windows服务或Web应用程序安装软件包
您还可以看看Riktig,它使用的是RapidTransit
您可以看到如何使用Autofac中的嵌套生存期作用域在同一进程中创建多个总线实例
以及如何使用引导程序将其连接在一起:
关键在于使用:
builder.RegisterType<ImageRetrievalStateBusInstance>()
.As<IServiceBusInstance>();
builder.RegisterType()
.As();
这是一个实例,可以在一个实例主机中注册多个实例,为您提供多个服务。。
builder.RegisterType<ImageRetrievalStateBusInstance>()
.As<IServiceBusInstance>();