我正在使用带有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?
答案 0 :(得分:0)
在您的连接字符串中输入prefetchcount = 2。任何大于1的值都会告诉代理允许超过X个未分组的消息熄灭。您需要摆弄此设置以找到适合您场景的最佳设置。