Для обработки заданий очистки, которые будут выполняться каждые 8 часов, в настоящее время мы реализовали следующее:
- Создайте запланированное задание с помощью планировщика Azure, который помещает сообщение в очередь хранилища при его запуске.
Реализуйте клиент таким образом, чтобы он постоянно опрашивал и обрабатывал каждый раз, когда получает сообщение. Пример реализации клиента:
while (!CancellationToken.Value.IsCancellationRequested) { var message = await client.GetMessageAsync(); if (message != null) { // process the message } }
Но проблема в том, что мы ждем бесконечно, даже зная, что получим сообщения только через 8 часов, а также, согласно документации, каждая попытка прочитать сообщение из очереди будет стоить денег.
Как оптимизировать это таким образом, чтобы слушатели создавались на лету в любое настраиваемое время вместо непрерывного цикла?