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

标签 activemq 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 只会为已配置的消费者或显式配置的接收端点创建队列。在上面的代码中,创建的唯一队列称为“事件监听器”。对于消费者消费的每种消息类型,都会创建一个主题并创建一个虚拟主题消费者,以便接收端点可以消费每种类型的消息。

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

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

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

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

await endpoint.Send(...);

关于activemq - 如何在 MassTransit 中为 ActiveMQ 设置唯一的队列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69596448/

相关文章:

java - 将 Log4J JMSAppender 与 ActiveMQ 结合使用

c# - 测试公共(public)交通消费者

masstransit - 在 MassTransit 消费者中获取动态对象

java - 在单个 Camel 上下文中分离路由实例

java - ActiveMQ:如何在使用临时队列时处理代理故障转移

distributed-computing - Akka.Net工作队列

c# - MassTransit 3,其中 AzureServiceBus 在队列名称前添加斜杠

.net - 复杂消息和大众运输反序列化

java - JBoss Fuse,使用 ActiveMQ 创建容器

c# - asp.net网站上使用ActiveMQ的例子