Rabbitmq 使用autofac为单个进程配置多个rebus实例
我遇到了这样一种情况:我的应用程序需要将消息发送到位于rabbit中两个不同虚拟主机中的两个队列,并从其中一个队列读取消息。将这两个队列移动到一个虚拟主机(这是完美的解决方案)是不可能的。因此,我需要在一个进程中运行2个rebus实例 我正在使用autofac进行依赖项注入。请将我转到一些资源,解释如何在一个进程中使用autofac在rebus中设置多个实例Rabbitmq 使用autofac为单个进程配置多个rebus实例,rabbitmq,autofac,rebus,Rabbitmq,Autofac,Rebus,我遇到了这样一种情况:我的应用程序需要将消息发送到位于rabbit中两个不同虚拟主机中的两个队列,并从其中一个队列读取消息。将这两个队列移动到一个虚拟主机(这是完美的解决方案)是不可能的。因此,我需要在一个进程中运行2个rebus实例 我正在使用autofac进行依赖项注入。请将我转到一些资源,解释如何在一个进程中使用autofac在rebus中设置多个实例 多谢各位 您应该配置总线实例,该实例用于在其他vhost上发送/发布消息,然后通过为此目的创建的专用服务访问 大致如下: public c
多谢各位 您应该配置总线实例,该实例用于在其他vhost上发送/发布消息,然后通过为此目的创建的专用服务访问 大致如下:
public class OtherVhostBusClient : IDisposable
{
readonly IBus _bus;
public OtherVhostBusClient(string amqpConnectionString)
{
_bus = Configure.With(new BuiltinHandlerActivator())
.Transport(t => {
t.UseRabbitMqAsOneWayClient(amqpConnectionString);
})
.Start();
}
public Task Publish(object e) => _bus.Publish(e);
public void Dispose() => _bus.Dispose();
}
如果随后将OtherVhostBusClient
配置为Autofac容器中的单例,则可以将其注入并使用它在其他vhost上发布内容
通过这种方式,您基本上将其视为某种“外部网络”,实现与它的集成,就像实现“网络”之间的任何其他类型的集成一样(可以是任何其他传输、HTTP等上的Rebus)
我希望这是有意义的:)我认为这种方法更有意义。我还有一些其他的应用程序,以后必须连接到第二个虚拟主机,我可以为这些应用程序重用相同的服务。非常感谢你!