Rabbitmq 使用autofac为单个进程配置多个rebus实例

Rabbitmq 使用autofac为单个进程配置多个rebus实例,rabbitmq,autofac,rebus,Rabbitmq,Autofac,Rebus,我遇到了这样一种情况:我的应用程序需要将消息发送到位于rabbit中两个不同虚拟主机中的两个队列,并从其中一个队列读取消息。将这两个队列移动到一个虚拟主机(这是完美的解决方案)是不可能的。因此,我需要在一个进程中运行2个rebus实例 我正在使用autofac进行依赖项注入。请将我转到一些资源,解释如何在一个进程中使用autofac在rebus中设置多个实例 多谢各位 您应该配置总线实例,该实例用于在其他vhost上发送/发布消息,然后通过为此目的创建的专用服务访问 大致如下: public c

我遇到了这样一种情况:我的应用程序需要将消息发送到位于rabbit中两个不同虚拟主机中的两个队列,并从其中一个队列读取消息。将这两个队列移动到一个虚拟主机(这是完美的解决方案)是不可能的。因此,我需要在一个进程中运行2个rebus实例

我正在使用autofac进行依赖项注入。请将我转到一些资源,解释如何在一个进程中使用autofac在rebus中设置多个实例


多谢各位

您应该配置总线实例,该实例用于在其他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)


我希望这是有意义的:)

我认为这种方法更有意义。我还有一些其他的应用程序,以后必须连接到第二个虚拟主机,我可以为这些应用程序重用相同的服务。非常感谢你!