我如何使用 MassTransit 由多个消费者订阅一个队列?
How I can subscribe to one queue by multiple consumers using MassTransit?
我正在使用 Azure 服务总线作为 MassTransit 的传输工具,我正在尝试将消息(命令)发送到队列:
var sendEndpoint = await busControl.GetSendEndpoint(sericeUri);
sendEndpoint.Send<ISimpleRequest>(new SimpleRequest(customerId));
我也尝试通过两个消费者连接到这个队列:
var _busControl = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
{
var host = cfg.Host("...", h =>
{
h.OperationTimeout = TimeSpan.FromMinutes(1);
});
cfg.ReceiveEndpoint(host, "queueName",
e => { e.Consumer<RequestConsumer>(); });
cfg.UseServiceBusMessageScheduler();
});
第二个消费者使用相同的代码和相同的队列名称。
在我发送消息后,只有一个消费者得到响应。那么我如何配置它以与两个或更多消费者一起使用?
如果您想获得两份消息,每个消费者一份,您应该使用两个单独的队列和 Publish
消息。在这种情况下,MassTransit 会将其发送到主题,每个队列将收到主题转发的副本。
我正在使用 Azure 服务总线作为 MassTransit 的传输工具,我正在尝试将消息(命令)发送到队列:
var sendEndpoint = await busControl.GetSendEndpoint(sericeUri);
sendEndpoint.Send<ISimpleRequest>(new SimpleRequest(customerId));
我也尝试通过两个消费者连接到这个队列:
var _busControl = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
{
var host = cfg.Host("...", h =>
{
h.OperationTimeout = TimeSpan.FromMinutes(1);
});
cfg.ReceiveEndpoint(host, "queueName",
e => { e.Consumer<RequestConsumer>(); });
cfg.UseServiceBusMessageScheduler();
});
第二个消费者使用相同的代码和相同的队列名称。 在我发送消息后,只有一个消费者得到响应。那么我如何配置它以与两个或更多消费者一起使用?
如果您想获得两份消息,每个消费者一份,您应该使用两个单独的队列和 Publish
消息。在这种情况下,MassTransit 会将其发送到主题,每个队列将收到主题转发的副本。