如何使用MassTransit为多个消费者订阅一个队列?

时间:2016-11-19 10:05:51

标签: c# azure azureservicebus masstransit

我使用Azure Service Bus作为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();
            });

第二个使用者具有相同队列名称的相同代码。 发送消息后,只有一个消费者获得响应。那么我如何将其配置为与两个或更多消费者合作?

1 个答案:

答案 0 :(得分:2)

如果您想获得两个消息副本,每个消费者一个副本,您应该使用两个单独的队列并EmbeddedDocumentField消息。在这种情况下,MassTransit会将其发送到主题,每个队列将收到从主题转发的副本。