0

Я использую MassTransit в качестве платформы обмена сообщениями, работаю поверх Azure Service Bus. Я запускаю MassTransit изнутри WebJob (хотя я не думаю, что это важно)MassTransit и MaxConcurrentCalls не ведут себя так, как ожидалось?

Теперь я пытаюсь заставить MassTransit обрабатывать несколько сообщений одновременно, так как теперь я имею дело с сообщениями, которые индивидуально потребуется некоторое время для обработки. Поэтому, чтобы ускорить работу, я не хочу, чтобы каждое сообщение обрабатывалось один за другим.

Я попытался установить MaxConcurrentCalls, например, 30, но это не похоже на это. Сообщения по-прежнему поднимаются моим потребителем один за другим.

Я также попытался установить PrefetchCount на 5 и т. Д., Но это ничего не меняет.

Что я делаю неправильно? Любая помощь с благодарностью

ответ

0

Итак, я провел некоторое тестирование с использованием MassTransit-Benchmark, и я могу получить много параллельных пользователей, работающих с Azure Service Bus, используя MassTransit 3.4.1.

Учитывая это, поймите, что Azure не работает быстро, поэтому, если ваш потребитель почти ничего не делает (и заканчивается менее чем за несколько мс), маловероятно, что вы увидите более одного за раз из-за как плохо доставка сообщений с служебной шиной. Я должен был добавить задержку 3 мс к потребителю, чтобы получить до 70-80 одновременных потребителей. Без задержки он сидел около 2-3 одновременных потребителей.

Итак, рассмотрите возможность настройки некоторых параметров. Кроме того, на хосте может быть установлен пакетный тайм-аут, который поможет, если вы уменьшите его до менее 10 мс, даже 5 мс, если вы делаете, могут быть небольшие сообщения. Более высокий счет предварительной выборки также помогает.

 Смежные вопросы

  • Нет связанных вопросов^_^