Можно ли использовать Quartz.Net с Spring.Net для создания заданий в БД MS SQL с запланированным временем - PullRequest
1 голос
/ 05 сентября 2011

Я создаю графический интерфейс в asp.net, в котором пользователи будут указывать время для планирования и задания, которые будут выполняться в будущем.

Работа в моем приложении является экземпляром класса Person (приведен ниже).В указанное время я хочу запустить метод submit () созданного экземпляра лица.

например,

public class Person
{
  string User {get;set;}
  public void Submit()
  {
     //create a text file with User entry

  }
}

Теперь в MS SQL у меня есть таблица Jobs.Таблица заданий имеет столбцы ScheduledTime (DateTime), JobDetail (XML) (где столбец JobDetail хранит сериализованную версию объекта Person, например, <Person User="TestUser"></Person>, Запланированное время: 02.02.10 12: 12: 11

Мне известночто Quartz.Net может запускать задания в назначенное время, но я не знаю, как использовать Quartz.Net с Spring.Net для получения заданий из БД и запуска их в назначенное время?

это возможно? Если это так, вы можете, пожалуйста, руководство?

1 Ответ

2 голосов
/ 05 сентября 2011

Вам нужно реализовать два отдельных компонента. Триггер и что-то, что опрашивает для выполнения заданий. На данный момент, исходя из структуры вашей таблицы, кажется, что вы хотите, чтобы задания выполнялись только один раз, а если нет, то вам нужно добавить столбец выражения cron и создать объекты CronTrigger.

Чтобы узнать, как использовать Spring таймер, вы можете найти здесь: http://static.springsource.org/spring/docs/1.2.9/reference/scheduling.html

Альтернативой Spring является реализация вашего опроса в базе данных. Например, создание расписания работы SQL Server, подход, который мы использовали. Недостатком является то, что вам нужно настроить его так, чтобы он выполнял задания, пропущенные при отключенном сервере базы данных.

Детали подхода к базе данных

В этом дизайне предполагается, что расписание запускается только один раз (для добавления повторяющихся действий необходимо добавить шаг перевода cron), и предполагается, что работа, выполняемая по расписанию, может быть запущена базой данных. Spring - лучшее решение, если вы можете делать это только программно.

  1. добавить столбец «обработано» в таблицу заданий
  2. создать сохраненный процесс, который запускается каждую минуту (или что-то еще)
  3. эта процедура ищет в прошлом любые задания, не помеченные как обработанные, запускает их и затем помечает как выполненные

Похожие:

Как настроить хост Quartz.NET для Spring.NET

Запуск задания только один раз с использованием кварца

...