У меня есть веб-роль, выполняющая некоторую фоновую обработку в фоновом потоке.Как реализовать активный/пассивный шаблон с облачными сервисами (веб-роль)?
Я хочу запустить несколько экземпляров веб-роли, но я хочу, чтобы одна из них обрабатывала фоновые задания. Если назначенный экземпляр, выполняющий фоновый процесс, перестает работать по какой-то причине, я хочу, чтобы другой экземпляр занял его место.
Какой самый простой способ реализовать это в Azure?
я подумал о периодически проверять Instances
коллекцию Role
объекта в RoleEnvironment.Roles
, и запустить фоновый поток, только если текущий экземпляр имеет наименьший Id (или решить, с некоторыми другими эвристики), таким образом, только один экземпляр будет обрабатывать фон рабочие места.
Должен ли этот подход работать? Влияют ли экземпляры ролей друг на друга, и соответственно ли обновляется коллекция Instances
?
Почему бы не использовать уборщица роль для запуска ваших фоновых задач? –
Да, это было бы прямолинейно, но наш клиент явно просил иметь только веб-роль, поэтому дополнительные экземпляры не нужны из-за дополнительной роли рабочего. –
Как долго будут выполняться ваши фоновые задачи? Веб-роль (размещение фоновой задачи в IIS) может быть проблематичной - IIS может отменить поток, пул приложений может быть переработан и т. Д. [См. Здесь] (http://haacked.com/archive/2011/10/16/the- опасность-of-implementation-recurring-background-tasks-in-asp-net.aspx /) – b2zw2a