2015-06-02 5 views
7

Я разрабатываю приложение, используя Azure Cloud Service и web api. Я хотел бы разрешить пользователям создавать сеанс консультаций, чтобы изменить цену этого сеанса, однако я хотел бы разрешить всем пользователям 30 дней покидать сеанс до того, как новая цена повлияет на цену для всех участников, которые в настоящее время зарегистрированы для сессия. Моя первая мысль состоит в том, чтобы использовать хранилище очереди и установить тайм-аут видимости для 30-дневного ограничения времени, но похоже, что это может привести к быстрому увеличению очереди с течением времени, особенно если сообщение не должно работать в течение 30 дней; не говоря уже о проблемах с заказом. Я также смотрю на планировщик задач, но изменения ценообразования сессии не являются повторяющейся концепцией, а более случайными. Является ли идея очереди хорошим подходом или есть лучший и эффективный способ ее достижения?Задачи, которые необходимо выполнить в определенную дату в Azure

+1

Обратите внимание, что максимальное количество сообщений TTL в Azure Queues составляет 7 дней. –

+1

Я заметил, что также в статье сравниваются очереди хранения очереди и очереди служебной шины. В этом случае моя единственная доступная опция для размещения задания в таблице базы данных и проверки каждый день? Этот подход кажется утечкой ресурсов в базе данных. – user1790300

ответ

3

Я думаю, что этот сценарий более подходит для использования Azure Scheduler. Программно создайте задание с однократным повторением с установленной датой, как 30 дней спустя, чтобы запустить один раз. После того, как это задание автоматически запускается планировщиком, назначьте действие для обратного вызова одному из ваших API/Служб, чтобы сделать другие необходимые обновления, а также удалить это задание из планировщика, как часть этого действия, чтобы иметь список чистой работы. В любом случае премиальный план Azure Scheduler Job Collection предоставит вам неограниченное количество заданий для запуска.

Надеется, что это именно то, что вы искали ...

+1

Здесь вы можете увидеть границы Планировщика Azure - https://github.com/Azure/azure-content/blob/master/articles/scheduler-plans-billing.md –

3

я бы рассмотреть возможность использования Azure WebJobs. WebJob в основном дает вам возможность запуска консольного приложения .NET в контексте Azure Web App. Его можно запускать по требованию, непрерывно или в ответ на повторное расписание. Если ваши требования к обработке низки и позволяют это, они также могут работать в том же процессе, в котором работает ваше веб-приложение, чтобы сохранить вас $$$, поскольку они свободны таким образом.

Вы можете запланировать запуск WebJob один или два раза в день и проанализировать ситуацию и отреагировать как это необходимо. Так как это действительно просто рабочая роль .NET, у вас есть максимальная гибкость.

4

Все, что вы пытаетесь сделать, должно выполняться с помощью реляционной базы данных. Вы можете использовать временные метки для записи, когда цены на сеанс изменились. Я бы не использовал для этого очередь. Очередь больше предназначена для передачи сообщений в распределенной системе. Ваша проблема заключается в том, чтобы отслеживать, какие цены изменились на каких сеансах и когда. Эти данные должны быть смоделированы в базе данных.

+0

Этот подход кажется, что он был бы самым чистым, но в лазурной среде мне все равно не нужно будет использовать планировщик для запуска каждый день, чтобы найти все изменения? – user1790300

+0

Основываясь на вашем комментарии, «изменения цены сеанса не являются повторяющейся концепцией, а более случайными» - похоже, что люди будут использовать ваш API для получения информации о ценах в произвольные моменты времени. Я предлагаю использовать кеш для кэширования текущих цен и иметь шаблон для чтения, чтобы пересчитать новые цены, если срок действия кеша истек. После того, как вы пересчитаете новые цены, верните их в кеш, чтобы их можно было быстро получить при следующем вызове. Тайм-аут, установленный в кеше, должен отражать максимальное количество времени, которое вы хотите использовать, не перераспределяя последние цены, несколько часов в день, вероятно, хорошо. –

 Смежные вопросы

  • Нет связанных вопросов^_^