пятница, 15 февраля 2013 г.

Библиотека Quartz.NET

В одном из текущих проектов понадобилось реализовать windows-сервис, который бы запускался раз в час, делал своё дело и засыпал до следующего запуска. Реализовал просто - через таймер.
Потом понадобилось добавить еще одну периодическую задачу, которая должна запускаться с другим интервалом. Как бы не проблема: создаём еще один таймер и радуемся. И что плодить таймеры каждый раз? Не хочу, ибо не красиво. Создать свой движок, управляющий созданием таймеров - тоже вариант. Но решил поискать существующие решения этой задачи.
Натолкнулся на Quartz.NET - портированный с Java open source framework Quartz. На сайте библиотеки есть много примеров использования scheduler.
Можно задавать:
  • Триггеры 
  • Job'ы - описываете периодичность работы задачи. Очень понравилась возможность задавать расписание в виде Cron Expression
  • Слушатели
  • Календари
  • и многое другое
Внедрение библиотеки труда не вызвало. Вышло просто и изящно.
Затем задался вопросом: есть ли какие-нибудь инструменты мониторинга-управления созданными задания.
Нашёл:
Лично я остановился на последнем варианте. Конечно первый вариант более свежий, но мне он не так приглянулся чисто эстетически. Хотя последний вариант давно не обновлялся (середина 2011 года), я быстро скачал исходники, обновил их до последней версии Quartz.NET на текущий момент (2.1.2). После чего связался с автором. Он оказался нашим соотечественником. Вскоре обновленная версия библиотеки появилась на github. К тому же у данной версии есть nuget-пакеты, что меня радует, т.к. я их использую во всех своих проектах для простоты обновления. Пакеты есть в 2х вариантах:
Вариант Remote мне как раз подошёл, т.к. задания у меня выполняются на одном сервере, а веб-морда находится на другом. Интеграция проста:
  • На сервере заданий настраиваете rpc-соединение (указываете порт, адрес, протокол)
  • На клиенте копируете нужные библиотеки в папку bin, модифицируете файл web.config и радуетесь. Часть работы делается при установке пакета CrystalQuartz.Remote. Нужно только адрес и порт подправить.
Пользуйтесь на здоровье :-)

Комментариев нет:

Отправить комментарий

Еще статьи

2leep.com