带RabbitMQ的NServiceBus 4.x是否支持圆形抢夺消费者或竞争消费者模型?

带RabbitMQ的NServiceBus 4.x是否支持圆形抢夺消费者或竞争消费者模型?,rabbitmq,nservicebus,Rabbitmq,Nservicebus,我正在使用NServiceBus 4.x和RabbitMQ 3.2.x作为我的传输。 我假设通过使用RabbitMQ作为我的传输,我可以选择竞争消费者模型。据我所知,NServiceBus对所有交换都采用“扇出”交换类型,目前不支持循环。但是,有一种方法可以配置NServiceBus,通过RabbitMQ提供的交换和通道利用间接寻址级别 我有几个消费者想要从给定队列中竞争消息。我所观察到的是订阅者阻止从队列中进一步检索消息,直到消息被消费。因此,在这一点上,有一个以上的消费者对我没有任何好处,除

我正在使用NServiceBus 4.x和RabbitMQ 3.2.x作为我的传输。 我假设通过使用RabbitMQ作为我的传输,我可以选择竞争消费者模型。据我所知,NServiceBus对所有交换都采用“扇出”交换类型,目前不支持循环。但是,有一种方法可以配置NServiceBus,通过RabbitMQ提供的交换和通道利用间接寻址级别

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

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

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

channel.BasicQos(0,prefetchcount,false)
我看不到任何地方可以通过NServiceBus中的配置更改此设置。此外,当我读到什么是预回迁时,我真的不确定这是我想要的。
是否可以在没有与MSMQ一起使用的distirbutor类型模式的情况下使用RabbitMQ?或者我应该移动到MassTransit还是Rebus?

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

这绝对应该得到支持。你是说有多个端点指向同一队列,但它们不能同时处理消息?是的,我有多个NServiceBus.Host.exe都处理相同的事件类型。事实上,它们只是同一个主机文件,只是在一个新的进程中旋转起来的。我可以观察它们,它们似乎阻止彼此访问目标队列。添加同一主机的多个实例不会影响它的显示。我的假设是,当我旋转同一主机的多个实例时,它们会竞争访问队列。这听起来确实很奇怪,你介意提出一个关于RabbitMq回购协议的问题吗?实际上我误解了你。您需要增加thr预取计数,因为1实际上是告诉rmq一次发送一条消息:下面是如何做到这一点: