рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓рд░ рдФрд░ рдЧреНрд░рд┐рд▓реНрд╕ рдореЗрдВ рдореЗрд▓ рднреЗрдЬрдирд╛

рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреНрд░реЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдмрд╛рдд рд╣реИред рдореЗрд▓ рднреЗрдЬрдирд╛ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рд╣реИ, рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреА рд╕рдордп-рд╕рдордп рдкрд░ рдЬрд╛рдБрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдЗрди рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдирд╛рдЬ - рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рд╣рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛рдо рд╕реЗ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп-рд╕рдордп рдкрд░ рдЬрд╛рдБрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд╡рд╛рд░реНрдЯреНрдЬ (рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЧреНрд░рд┐рд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдореЗрд▓ рдХреЗ рд▓рд┐рдП, рдореЗрд▓ рдкреНрд▓рдЧрдЗрди рдкреНрд▓рдЧрдЗрди рдмрд╕ рд╕рд╣реА рд╣реЛрдЧрд╛ред

рдореЗрд▓ рдкреНрд▓рдЧрдЗрди рдмрд╕ smtp рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдмрд╕ рдЗрд╕рдХреЗ рдкреГрд╖реНрда рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдзрд╛рдЧрд╛ рдмрдирд╛рдирд╛ рдерд╛ рдЬрд┐рд╕реЗ рдЖрдк рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд░реИрдо рдХреЛ рднреЗрдЬреЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рдЕрд▓рдЧ рдЬрд╛рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреНрд░реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдореИрдВрдиреЗ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдХрд╛ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг (grails-quartz-0.4.2.zip - рдЧреНрд░реЗрд▓реНрд╕-рдХреНрд╡рд╛рд░реНрдЯреНрдЬ 0.4.2 (рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬ))ред рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрдирд╛
рджреЛрдиреЛрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рдкрд░ рдЧреНрд░реЗрдирд▓реНрд╕ рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣реИ:
рд╣рдо рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреНрд░рд┐рд▓реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦреЗрдВрдЧреЗ:
grails install-plugin quartz
рдЫрд╡рд┐

рд╕рдлрд▓ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдореЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ,
grails install-plugin mail
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП, BuildConfig.groovy рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдЯрд┐рдкреНрдкрдгреА рд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╡рд╣ рд░реЗрдЦрд╛ рдЬрд╣рд╛рдБ mavenCentral () рд╡рд┐рдзрд┐ рдХрд╣рд▓рд╛рддреА рд╣реИред

рдЫрд╡рд┐

рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рд╕реЗред рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдПрдХ рдиреМрдХрд░реА рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
grails create-job Habra рдЬрд╣рд╛рдВ рд╣рд╛рдмрд░рд╛ рдХрд╛ рдирд╛рдо рд╣реИ
рдЧреНрд░реЗрд▓реНрд╕ рдЬреЙрдмреНрд╕ рдлреЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдЧреА рдФрд░ рдЗрд╕реЗ 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 рдХреЛ рдПрдХ рд╣реА рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ - рд╡рд╣ рд╕рдордп рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреА, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐-рджреЛрд╣рд░рд╛рд╡ рд╕рдордпред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдмрдЧреНрд░реБрдк рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди () рд╡рд┐рдзрд┐ рд╣реА - рдЬреЛ рд╣рд░ рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣рд╛рдВ, рд╡рд┐рд╡рд░рдг рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдк рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдХреЗ рдЧреНрд░реВрд╡реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдХрд░реАрдм рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рдореЗрд▓ рдкреНрд▓рдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 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?'
}


рдпрд╣ рд╕рдм рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд () рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрдн рд╕рдордп рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБред

Source: https://habr.com/ru/post/In129636/


All Articles