簡體   English   中英

MassTransit(C#)中端點之間的並發限制

[英]Concurrency Limit across endpoints in MassTransit (C#)

公交3.5,RabbitMq

我有一個總線連接的服務,可監聽隊列數量。

  • Q1
  • Q2
  • Q3
  • Q4等

所有隊列都接受相同的消息類型,並且所有隊列都使用競爭的使用者模式,其中不同機器上有多個服務在監聽這些相同隊列。

我要做的是為每個單個進程一起在所有這些隊列上設置並發限制。

我的資源有限(可用許可證數量),並且需要將並發請求限制為每台計算機可用的許可證數量。

因此,機器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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM