【问题标题】:Multiple different RabbitMQ connections within single app单个应用程序中的多个不同 RabbitMQ 连接
【发布时间】:2021-10-01 14:09:09
【问题描述】:

我有一个使用 MassTransit 监听队列的 .net-core 服务。它需要一条消息,完成所有工作,最后它应该使用另一个连接(不同的主机、登录名等)发布一条不同的消息。 我添加了第二条总线,例如 MassTransit MultiBus 示例 (https://masstransit-project.com/usage/containers/multibus.html)

services.AddMassTransit<ISecondBus>()

但是我不知道如何从我的控制器正确访问这条新总线。我可以在第二辆公共汽车上使用AddConsumer(),但是我不知道如何触发它的Consume() 方法。据我了解,消费者是等待传入消息的人,但我只需要发布而不需要任何额外的复杂层。 有关如何正确执行此操作的任何提示?

【问题讨论】:

    标签: .net-core rabbitmq masstransit


    【解决方案1】:

    要在第二条总线上发布,从第一条总线上的消费者,您需要添加ISecondBus 作为对消费者的依赖。然后,您可以使用该总线在第二条总线上发布消息。

    public class MyConsumer :
        IConsumer<Message>
    {
        public MyConsumer(ISecondBus secondBus)
        { 
            _secondBus = secondBus;
        }
    
        public async Task Consume(ConsumeContext<Message> context)
        {
            // ...
    
            await _secondBus.Publish(new SomeEvent());
        }
    }
    

    【讨论】:

      【解决方案2】:

      您需要使用MultiBus 功能。

      它要求您为每个总线实例或非默认总线实例创建一个接口,并单独配置它们。

      【讨论】:

      • 我已经添加了第二条具有不同接口的总线。主要问题是我如何才能访问这个额外的总线来发布一些东西。
      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多