2017-07-08 36 views
0

地下3.5, 的RabbitMQ并发限制在MassTransit(C#)

我有上队列的数目侦听总线连接服务。

  • Q1
  • Q2
  • Q3
  • Q4 等

所有队列被接受相同的消息类型,所有这些都使用竞争消费者模式,其中有多个监听这些相同队列的不同机器上的服务。

什么我后设置的所有这些队列并发限制在一起,每一个过程。

我有一个有限的资源(可用的许可证的数量),以及需要限制并发请求每台机器可用许可证的数量。

所以机器A可能有4个,B机可以有10个,等等

我不想机器A从所有这些队列消耗任何消息,如果我已经有4名消费者跨越所有队列处理消息,它如果他们有可用的资源,应该让其他人(机器B,C等)使用它。

我的问题是,使用

sbc.UseConcurrencyLimit(4) 

var bus = MassTransit.Bus.Factory.CreateUsingRabbitMq 

是设置每个队列并发限制,所以如果我有他们的4,它们都相加。

我需要的是所有的队列来累计工作到并发性的限制,但不能超过它。

是否有MassTransit一个内置的方式来实现这一目标?

回答

0

没有内置的方法来限制多个服务之间的并发性。这需要使用某种类型的全局资源管理器,而且它不是MassTransit支持的东西。