Как стать автором
Обновить

Планировщик задач и отправка почты в Grails

Время на прочтение3 мин
Количество просмотров5.1K
Эта статья расчитана на тех кто уже имеет првое знакомсво с Grails, если же пока этого не случилось, то можете ознакомиться здесь. Теперь к делу. Отправка почты довольно простая и нужная задача, чуть более сложнее реализовать периодическую проверку какого-либо собыитя. А если соеденить эти две задачи получается нормальная задача которая требует определенных временных затрат. Grails — созданный чтобы облегчить нам жизнь освобождает нас от рутинной работы. Для того чтобы реализовать периодическую проверку на события мы будем использовать Quartz (а точнее его плагин под Grails), а для удобной отправки почты плагин Mail Plugin будет в самый раз.

Mail Plugin просто подключается по smtp и отправляет почту. При его загрузке ничего не выбираем и ни на что не отвечаем, просто жмем download на его страничке. Quartz же делает то, чтобы вы делали руками, если бы вам пришлось создавать поток, который бы вы, направили в оперативку на службу. Кончно можно было создать отдельный jar и запускать его с помощью cron, но данный метод здесь рассматриваться не будет. Когда скачивал quartz я взял не последнюю, а стабильную версию Quartz-а (grails-quartz-0.4.2.zip — Grails-Quartz 0.4.2 (Stable Release)). Установка плагина
После того как скачали оба плагина, находим куда установили grails, копируем плагины в директорию plugins. Следующий шаг уже в командной строке:
Переходим в директорию где у нас лежит Grails-проект и пишем следующее:
grails install-plugin quartz
image

после успешной установки quartz-а устанавливаем mail,
grails install-plugin mail
Для установки потреуется сделать активным закомменченную строку в файле BuildConfig.groovy. А именно строку где вызывается метод mavenCentral().

image

После установки плагинов нам осталось только сконфигурировать их. Начнем с Quartz. Для начала нам нужно создать Job. Это делается с помощью команды
grails create-job Habra где Habra это название
Grails создаст для нас класс внутри папки Jobs и назовет его HabraJob.groovy.
Подкорректируем его так, чтобы он через 10 секунд после запуска, каждые 5 секунд в консоли здоровался с Хабраюзером и говорил ему текущее время:

class HabraJob {

static triggers = {
simple name: 'HabraTrigger', startDelay: 2000, repeatInterval: 2000
}

def group = "HabraGroup"

def execute() {
println "Hello Habrauser "+new Date()
}
}


В коде создается сначала триггер с именем HabraTrigger, задаем в этом же блоке startDelay – время после которого произойдет первый запуск, repeatInterval – время повторения. Далее создается группа с именем HabraGroup и собственно сам метод execute() — отвечающий за то, что выполнять при каждом запуске. Здесь в разделе description можно поближе познакомиться с Groovy синтаксисом Quartz-а.
Теперь перейдем к отправке почты с помощью Mail Plugin. Для этого нужно прописать в файле Config.groovy настройки:

grails {
mail {
host = "smtp.gmail.com"
port = 465
username = "********@gmail.com"
password = "**********"
props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
}
}


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


sendMail {
to "user@habrahabr.com"
subject "Hello %habrauser%"
body 'How are you?'
}


Вот собственно и все, если скопировать этот код в метод execute() и настроить время запуска, то задача будет выполнена. Удачи всем.
Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+4
Комментарии1

Публикации