[英]Concurrency Limit across endpoints in MassTransit (C#)
公交3.5,RabbitMq
我有一個總線連接的服務,可監聽隊列數量。
所有隊列都接受相同的消息類型,並且所有隊列都使用競爭的使用者模式,其中不同機器上有多個服務在監聽這些相同隊列。
我要做的是為每個單個進程一起在所有這些隊列上設置並發限制。
我的資源有限(可用許可證數量),並且需要將並發請求限制為每台計算機可用的許可證數量。
因此,機器A可能有4,機器B可能有10,依此類推。
如果我已經有4個使用者處理所有隊列中的消息,我不希望機器A使用所有這些隊列中的任何消息,它應該讓其他人(機器B,C等)在擁有可用資源的情況下使用它。
我的問題是使用
sbc.UseConcurrencyLimit(4)
內
var bus = MassTransit.Bus.Factory.CreateUsingRabbitMq
正在為每個隊列設置並發限制,所以如果我有4個,則它們全部加起來。
我需要的是讓所有隊列累計達到並發限制,但不要超過該限制。
MassTransit中是否有內置方法可以實現此目標?
沒有內置的方法來限制多個服務之間的並發。 那將需要使用某種類型的全局資源管理器,而MassTransit並非開箱即用地支持它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.