Как ускорить чтение из темы Azure ServiceBus в WebJob?

У меня есть Azure WebJob, который читает сообщения из раздела ServiceBus, и я ищу способы ускорить его. Я видел способы сделать это с несколькими фабриками и асинхронными методами, но эти примеры не для WebJob, я не уверен, как это можно применить в веб-работе, любые предложения или ссылки на соответствующие статьи были бы очень оценили!

Статья, которую я видел с идеями по ускорению использования ServiceBus, находится здесь: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements Я думаю, что в нормальном exe Я мог бы использовать несколько фабричных и асинхронных идей из этого, но с WebJob у меня есть метод с атрибутом ServiceBusTrigger, поэтому я не уверен, смогу ли я использовать идеи из этой статьи в WebJob.

1 ответ

Решение

Если вы используете ServiceBusTrigger вы в значительной степени заблокированы в одном приемнике сообщений с обработчиком OnMessage, настроенным на параллелизм, который вы настроите. Чтобы увеличить пропускную способность, вы можете использовать NoAutomaticTrigger webjob и создайте собственную инфраструктуру для обработки сообщений. При таком подходе вы сможете создавать несколько получателей сообщений с фабрикой (каналом) для каждого, с параллелизмом, установленным для каждого из получателей. Async (в случае, если вы не используете его) поможет, как указал @Rob.

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

Другие вопросы по тегам