2016-07-01 4 views
0

Я новичок в весне. Пожалуйста, помогите мне понять, что я должен использовать (TaskExecutor, @ Sceduled, кварт Sceduler, ...) для реализации этой задачи:Выполнение задания и планирование весной

У меня есть Заказать объект и Контакты (, связанные с 1: N отношение. В одном заказе может быть много контактов). Таким образом,

  1. Когда заказ создан, приложение должно отправить письмо всем связанным контактам.
  2. Когда новый Контакт создается и подключается к уже созданному Заказу, этот Контакт также должен получить электронное письмо.
  3. Срок действия заказа истекает через 2 дня. Контакт должен получить электронное письмо.

ответ

1

Шаг1:

  1. Когда заказ создан, приложение необходимо отправить по электронной почте для всех связанных контактов.

Добавить 2 новых столбца в таблицу контактов (или аналогичную таблицу).

is_Send_Email -> логического типа

Email_Send_Time -> метка времени/даты Тип

В то время как вставки новая строка (создаются новый порядок), установить is_Send_Email = истинный и Email_Send_Time = текущего времени , для все связанные с нами контакты.

2.Когда новый Контакт создается и подключается к уже созданному Заказу, этот Контакт также должен получить электронное письмо.

При добавлении контакта в порядке, установленном is_Send_Email = верно и Email_Send_Time = Текущее время (при вставке) для вновь добавленных контактов.

3.Когда срок действия истекает, 2 дня спустя Контакт должен получить электронное письмо.

Set is_Send_Email = верно для всех контактов в истекающий порядке и Email_Send_Time = Текущее время + 2 дня.

Шаг2:

Включение планирования с использованием @EnableScheduling в классе конфигурации.

@Configuration 
@EnableScheduling 
public class AppConfig { 

    @Bean 
    public MyBean bean() { 
     return new MyBean(); 
    } 

} 

Step3:

Использование @Scheduled аннотаций для вызова почты метод отправки через определенные промежутки времени.

В соответствии с Spring documentation ..

34.4.2 @Scheduled аннотаций

@Scheduled аннотации могут быть добавлены к способу наряду с триггерной метаданных.

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

@Scheduled(fixedDelay=5000) public void doSomething() { 
// something that should execute periodically 
} 

Если выполнение фиксированной скорости требуется, просто изменить имя свойства указанного в аннотации. Следующие будут выполняться каждые 5 секунд, измеренных между последовательными временами запуска каждого вызова .

@Scheduled(fixedRate=5000) public void doSomething() { 
    // something that should execute periodically 
} 

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

@Scheduled(initialDelay=1000, fixedRate=5000) public void 
doSomething() { 
    // something that should execute periodically 
} 

Если простые периодические планирования не является достаточно выразительным, то может быть обеспечено выражение хрон . Например, следующее будет выполнять только в будние дни.

@Scheduled(cron="*/5 * * * * MON-FRI") public void doSomething() { 
    // something that should execute on weekdays only 
} 

[Подсказка] Вы можете дополнительно использовать зоны атрибут указать зону времени , в котором будет решена выражение хрон. Обратите внимание, что у запланированных методов должно быть пустое значение и не должно быть никаких аргументов. Если метод должен взаимодействовать с другими объектами из контекста приложения , то обычно они были бы предоставлены через инъекцию зависимостей .

Step4:

Проверьте каждую запись в таблице Order, если is_Send_Email = верно для записи, а затем запустить электронную почту для этого заказа/Контакты любыми.

Как отправить электронное письмо с использованием Spring, вы можете обратиться к этому article.

Счастливый обучения :-)

+0

Чтобы отправить электронную почту с помощью SpringBoot можно также рассчитывать на [эту библиотеку] (https://github.com/ozimov/spring-boot-email-tools) – JeanValjean

+0

@Mary, пожалуйста примите этот ответ, если это поможет. –

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