0

我使用MassTransit作爲我的消息框架,在Azure Service Bus上運行。我正在WebJob中運行MassTransit(雖然我不認爲這很重要)MassTransit和MaxConcurrentCalls的行爲與預期不符?

現在我試圖讓MassTransit同時處理多個消息,因爲我正在處理單獨的消息需要一段時間來處理。所以爲了加速性能,我不希望每個消息都被逐一處理。

我試着設置MaxConcurrentCalls爲例如30,但似乎沒有這樣做。消息仍然由我的消費者逐一提取。

我也嘗試設置PrefetchCount爲5等,但它不會改變任何東西。

我在做什麼錯?非常感謝任何幫助

回答

0

因此,我使用MassTransit-Benchmark進行了一些測試,並且我可以使用MassTransit 3.4.1獲得許多使用Azure Service Bus執行的併發使用者。

考慮到這一點,認識到Azure不是很快,所以如果你的消費者幾乎沒有做任何事情(並且在不到幾ms的時間內完成),那麼你不可能一次看到多於一個,因爲消息傳遞與服務總線的差距如何。我不得不向消費者添加3ms的延遲以獲得70-80個併發消費者。毫不遲疑地,這個消費者大約有2-3個同時消費者。

所以,考慮調整一些設置。另外,如果您將可能的小信息縮小到10ms以下,甚至是5ms,那麼您可以在主機上設置批處理超時,這將有所幫助。較高的預取計數也有幫助。