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,那么您可以在主机上设置批处理超时,这将有所帮助。较高的预取计数也有帮助。