带有RabbitMQ的NServiceBus 4.x是否支持围绕消费者或竞争消费者模式?

时间:2013-11-06 20:14:00

标签: rabbitmq nservicebus

我正在使用带有RabbitMQ 3.2.x的NServiceBus 4.x作为我的传输。 我假设通过使用RabbitMQ作为我的传输,我将获得竞争的消费者模型作为选项。据我所知,NServiceBus为所有交易所使用“Fannout”交换类型,目前不支持循环。但是有没有办法配置NServiceBus以利用RabbitMQ提供的交换和通道的间接级别。

我有几个消费者想要竞争来自给定队列的消息。我观察的是订阅者阻止访问从队列中进一步的消息检索,直到消息被消费。因此,此时拥有多个消费者,除了冗余之外,我没有其他好处。

在读取RabbitMQ上的一些文档后,我假设在从订阅者发送Ack收据之前阻止是正常的。但我假设订户#2可以自由访问队列以获取另一条消息。

提到增加RabbitMQ通道上的预取计数。 示例:

channel.BasicQos(0,prefetchcount,false)

我没有看到任何可以通过NServiceBus中的配置更改此设置的地方。当我读到预取的时候,我真的不确定这是我在寻找什么。 是否可以使用RabbitMQ而不使用与MSMQ一起使用的distirbutor类型模式?或者我应该转移到MassTransit还是Rebus?

1 个答案:

答案 0 :(得分:0)

在您的连接字符串中输入prefetchcount = 2。任何大于1的值都会告诉代理允许超过X个未分组的消息熄灭。您需要摆弄此设置以找到适合您场景的最佳设置。