如何在 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(...);
在项目的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(...);