Способ выполнения задачи в соответствии с заданным расписанием - PullRequest
0 голосов
/ 09 сентября 2011

Я собираюсь создать небольшое приложение, которое будет отвечать за рассылку различных отчетов различным пользователям с разными интервалами.Мы можем говорить о 50 или 100 различных отчетах, предназначенных для разных людей.Некоторые отчеты должны создаваться каждый день, некоторые - каждую неделю, а некоторые - каждый месяц.

Ранее я использовал библиотеку Quartz для регулярного запуска задач.Тем не менее, для простоты мне нравится мысль о том, чтобы одна нить Quartz заботилась о всех отчетах.То есть поток должен проходить через все отчеты, скажем, каждые 15 минут, и определять, пора ли генерировать и отправлять один или несколько.Неважно, будет ли отчет генерироваться в 12:00 или 12: 15.

Я думаю о том, можно ли было бы каким-то образом установить для каждого отчета определенное время, например "mon @"12: 00, ср. 12: 00 "или" пт @ 09: 30 ".Затем, основываясь на этом, поток определит, пришло ли время отправить отчет или нет.

Мой вопрос;Кто-нибудь еще делал что-то подобное и существуют ли какие-либо библиотеки, которые могут облегчить выполнение этой задачи?

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

вы можете создать только один поток, и он будет пинговать «структуру данных расписания заданий» через некоторый промежуток времени, чтобы увидеть, нужно ли запускать отчет.Если да, он запустит отчет, в противном случае он пойдет на короткий сон и снова пингует после указанного времени сна.

Это вызовет проблему, если одно задание занимает слишком много времени и вы начинаете накапливать задания.

Структура данных расписания заданий будет сохранять свою запись отсортированной по отметке времени.

1 голос
/ 09 сентября 2011

почему бы просто не зарегистрировать отдельный экземпляр задачи кварца для каждого отчета и позволить Quartz обрабатывать все планирование для вас? Это после всего, что стоит за этим.

...