Выполнение Azure WebJob QueueTrigger
Я выполняю несколько одновременных экземпляров QueueTrigger в рамках веб-задания Azure. Это одна функция, но она вызывается несколько раз параллельно.
Моя функция использует статические переменные для кэширования данных, которые используются несколько раз.
Иногда, когда функции запускаются, у меня возникают столкновения со статическими объектами, которые могут быть объяснены только несколькими процессами, пытающимися получить к ним доступ одновременно, но я был убежден, что каждый экземпляр queuetrigger работает изолированно.
Итак, мои вопросы:
Экземпляры queuetrigger выполняются изолированно?
Если нет, существует ли конкретное событие, которое срабатывает при загрузке "экземпляра", чтобы можно было загружать статические объекты?
1 ответ
Разобрался с некоторыми экспериментами.
Экземпляры QueueTrigger запускаются как часть процесса, внутри которого выполняется WebJob, и не выполняются изолированно.
WebJobs автоматически закрываются, если им не говорят, чтобы они оставались открытыми, и потеряют все статические данные. Это может вызвать запутанное поведение, но это из-за замысла.