【发布时间】:2017-12-12 21:37:07
【问题描述】:
公共交通 3.5, RabbitMq
我有一个总线连接服务,它监听队列的数量。
- 第一季度
- 第二季度
- 第三季度
- 第四季度 等等
所有队列都接受相同的消息类型,并且所有队列都使用竞争消费者模式,其中不同机器上的多个服务侦听这些相同的队列。
我所追求的是对所有这些队列一起设置并发限制,每个单个进程。
我的资源(可用许可证数量)有限,并且需要将并发请求限制为每台机器的可用许可证数量。
所以机器 A 可能有 4 个,机器 B 可能有 10 个,等等。
如果我已经有 4 个消费者处理所有队列中的消息,我不希望机器 A 使用所有这些队列中的任何消息,它应该让其他人(机器 B、C 等)在有可用资源的情况下使用它。
我的问题是使用
sbc.UseConcurrencyLimit(4)
里面
var bus = MassTransit.Bus.Factory.CreateUsingRabbitMq
正在设置每个队列的并发限制,所以如果我有 4 个,它们都会加起来。
我需要的是所有队列累积达到该并发限制,但不超过它。
MassTransit 中是否有实现此目标的内置方法?
【问题讨论】:
标签: c# concurrency rabbitmq masstransit