单个应用程序中的多个不同的 RabbitMQ 连接

Multiple different RabbitMQ connections within single app

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

services.AddMassTransit<ISecondBus>()

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

您需要使用 MultiBus 功能。

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

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

public class MyConsumer :
    IConsumer<Message>
{
    public MyConsumer(ISecondBus secondBus)
    { 
        _secondBus = secondBus;
    }

    public async Task Consume(ConsumeContext<Message> context)
    {
        // ...

        await _secondBus.Publish(new SomeEvent());
    }
}