如何在 MassTransit 中为 ActiveMQ 设置唯一的队列名称?

How to set unique queue name for ActiveMQ in MassTransit?

在项目的StartUp中,我对MassTransit.ActiveMQ做了如下设置。但是当我运行时,它为我创建了两个队列,一个是event-listener,另一个叫做Generation

当我发布信息时,信息进入系统生成的队列。

但是我想在我设置的队列event-listener中发布信息。

请指导我

services.AddMassTransit(x =>
{
    x.AddConsumer<EventConsumer>();

    x.UsingActiveMq((context, cfg) =>
    {
        cfg.Host("localhost", h =>
        {  
            h.Username("admin");
            h.Password("admin");
        });

        cfg.ReceiveEndpoint("event-listener", e =>
        {
            e.ConfigureConsumer<EventConsumer>(context);
        });
    });
});

MassTransit 只会为配置的消费者或明确配置的接收端点创建队列。在上面的代码中,创建的唯一队列将被称为 event-listener。对于消费者消费的每种消息类型,都会创建一个主题,并创建一个虚拟主题消费者,以便接收端点可以消费每种类型的消息。

发布消息时,会为每个已发布的消息类型创建一个主题

如果您想将消息直接发送到队列,而不是发布:

var provider = serviceProvider.GetRequiredService<ISendEndpointProvider>();

var endpoint = await provider.GetSendEndpoint(new Uri("queue:event-listener"));

await endpoint.Send(...);