Я оцениваю использование Azure функций для получения данных из вышестоящих систем и обработки данных с помощью различных нисходящих вызовов API. Я реализовал (в Java) функцию Azure, используя HttpTrigger для получения данных в восходящем направлении и передачи sh в очередь служебной шины («производитель»). Я также реализовал (опять же, в Java) сторону «потребителя» как функцию Azure с ServiceBusQueueTrigger. Обе эти функции работают как обычно для нормальных операций. В очереди служебной шины включены сеансы.
Мой основной вопрос - как правильно отключить функцию приемника / потребителя, когда нисходящие API отключены по какой-либо причине (обновления, прерывание обслуживания, прерывание сети и т. Д. c). .)? Функция «потребителя» использует внутренние и внешние API.
В пакете com.microsoft. azure .servicebus.management java есть класс ManagementClient, который я использовал для включения / выключения. очередь служебной шины, использующая метод updateQueue с ограниченным успехом. Вызов метода updateQueue, устанавливающий для EntityStatus значение Disabled или ReceiveDisabled, действительно останавливает функцию-получатель от получения данных из очереди служебной шины. Однако проблема заключается в том, что при вызове того же метода updateQueue для установки EntityStatus в значение Active функция-потребитель не перезапускает потребляющие данные; функция остается бездействующей, даже если в очередь служебной шины добавляются дополнительные данные. Фактически, единственный способ заставить потребляющую функцию потреблять данные, это перезапустить саму функцию с помощью портала.
Есть ли что-то еще, что я должен сделать, чтобы правильно повторно активировать потребительскую функцию, и не должен прибегнуть к остановке / запуску функции?
Я использую очередь служебной шины для гарантированной доставки и упорядочения данных в течение сеанса.