Стоп лазурной функции программно - PullRequest
0 голосов
/ 08 ноября 2018

Привет, я понимаю, что, если я создаю функцию Azure, которая запускается сообщением в очереди, она может масштабироваться (по горизонтали), если в очереди несколько сообщений. Другими словами, несколько экземпляров одной и той же функции Azure может быть запущен для обработки сообщений в очереди.

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

Теперь мой вопрос: как программно остановить / уничтожить конкретный экземпляр (идентифицируемый сохраненным идентификатором) моей функции Azure?

СПАСИБО ЗА ПРЕДЕЛА !!

СЦЕНАРИЙ

У меня есть панель инструментов для моих пользователей. Где они могут создать задачу. Как только задача создана, определение отправляется в очередь вместе с идентификатором пользователя в виде сообщения. И как только сообщение msg становится доступным в очереди, запускается функция azure. Теперь, когда пользователь обновляет панель мониторинга, он / она видит список задач (созданных им) независимо от того, выполняются они или выполняются. Теперь я должен дать им возможность остановить выполнение задачи.

Теперь несколько пользователей могут создавать задачи с разными параметрами, отправляя несколько сообщений в одну и ту же очередь, что приведет к запуску нескольких экземпляров одной и той же функции Azure. Каждый экземпляр связан с конкретным пользователем. И если пользователь решает остановить задачу (которая является экземпляром той же функции Azure), мне нужно остановить этот конкретный экземпляр функции Azure (не то же самое, что отключить всю функцию Azure). Теперь все, что я знаю о работающем экземпляре это идентификатор, и мне было интересно, могу ли я остановить / убить / отменить этот конкретный экземпляр функции из кода.

Надеюсь, я успешно объяснил свою ситуацию. если у вас есть еще вопросы, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 08 ноября 2018

Сегодня нет способа сделать это. Даже если вы убьете экземпляр, контроллер масштабов функций, скорее всего, увидит, что вам нужно больше экземпляров для обработки и в любом случае запустить другой для вас.

Было бы хорошо, чтобы полностью понять сценарий здесь - вы пытаетесь ограничить масштабирование? Или остановить отдельные функции убегания?

Edit: после прочтения вашего сценария вы смотрели на Durable Functions? Вы должны иметь возможность запускать оркестровки на основе сообщений очереди и управлять ими с помощью OrchestrationClient. Предостережение заключается в том, что функции Activity не могут быть отменены после их запуска, но если вы достаточно разложите свои шаги, вы сможете завершить внутрипроцессную оркестровку. Смотрите здесь для более подробной информации:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...