Очередь хранилища против очереди служебной шины - вопрос об опросе / стоимости
У меня слегка философская проблема. Мы используем Очереди хранения для обработки "билетов". Реализация, которую мы реализовали, заключается в том, что у нас есть фоновая служба (рабочая роль), которая опрашивает очередь хранения и выясняет, есть ли какой-нибудь билет, который нужно обработать. Характер работы, которую мы делаем, носит сезонный характер. Это означает, что билеты не будут все время обрабатываться. Проблема, с которой мы сталкиваемся, заключается в том, что, поскольку несколько экземпляров рабочих ролей непрерывно опрашивают очередь хранения, мы оказываем влияние на стоимость, так как это слишком много вызовов GetMessage().
Я наткнулся на очередь служебной шины, которая имеет возможность на основе событий. Там у нас есть концепция OnMesage(), которая вызывается каждый раз, когда новое сообщение становится доступным в очереди служебной шины.
Но мой вопрос - OnMessage() идет вперед и вызывает Receive() внутри? Что означает, что это просто синтаксический сахар, а внутри все еще идет опрос, и будет ли влияние на стоимость в случае Service Bus Queue?
Любое понимание этого будет полезно.
1 ответ
Клиент Azure Service Bus использует длинный опрос для получения сообщений от посредника. По умолчанию он установлен на 1 минуту или когда приходит сообщение. Поэтому, если у вас есть сообщение, которое появляется раньше, чем через 1 минуту, оно будет извлечено, и возникнет проблема с другим опросом в течение 1 минуты. OnMessage
/MessageHandler
не являются исключением. Это абстракция более высокого уровня поверх операции приема низкого уровня.