2017-07-08 68 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支持的東西。