在项目的 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/