2

我使用 NServiceBus 4.x 和 RabbitMQ 3.2.x 作为我的传输。我假设通过使用 RabbitMQ 作为我的传输,我将获得竞争消费者模型作为选项。我了解 NServiceBus 对所有交换都采用“Fannout”交换类型,目前不支持循环。但是,有没有一种方法可以配置 NServiceBus 以利用 RabbitMQ 提供的 Exchange 和通道的间接级别。

我有几个消费者我想竞争来自给定队列的消息。我观察到的是订阅者阻止访问从队列中进一步检索消息,直到消息被消费。因此,在这一点上拥有一个以上的消费者除了冗余之外对我没有任何好处。

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

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

channel.BasicQos(0,prefetchcount,false)

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

4

1 回答 1

0

将 prefetchcount=2 放入您的连接字符串中。任何大于 1 的值都会告诉代理允许多于 X 条未确认的消息发出。您需要调整此设置以找到最适合您的方案的设置。

于 2013-11-08T08:06:31.513 回答