תזמון משימות בעזרת Quartz

היום נציג מוצר (שהחל את דרכו כפרויקט קוד פתוח) לתזמון משימות, ונדגים כמה פשוט להשתמש בו בתוך אפליקציות Grails (המוצר זמין לפלטפורמת JAVA).

 תזמון משימות – הבסיס

 פעמים רבות נרצה לתזמן משימה מסוימת לביצוע במועד מאוחר יותר, לקבוע משימה שתתבצע בכל פרק זמן מסוים וכן הלאה. JAVA מאפשרת לנו לבצע זאת בעזרת Scheduler ומגרסה 5 גם על ידי ScheduledExecutorService, המאפשרים לתזמן משימות לזמן מסוים ו/או לביצוע חוזר.

Quartz הנה תשתית שבנויה לתת פתרון לנושא של תזמון עם דרישות מורכבות יותר, ובהן:

 לוחות זמנים מורכבים

זוהי היכולת לתזמן משהו יותר מתוחכם מאשר "בצע כל שעה" אלא לתת הוראה בסגנון "בצע כל שעה בימים ראשון עד חמישי, כל חצי שעה בימים שישי ושבת, וכל 4 שעות ביום ראשון"

Persistence

היכולת לשמור נתוני תזמון, ולשרוד למשל הפעלה מחדש של האפליקציה תוך "זכירת" המשימות שצריכות להתבצע.

Clustering & high availability

נושאים שנעסוק בהם בהמשך. באופן בסיסי מדובר על היכולת להתייחס לקונפיגורציה מרובת שרתים בתור אפליקציה אחת בהיבט של תזמון משימות (כך, אם שרת אחד מתזמן משימה ונופל, שרת אחר יבצע אותה כשיגיע הזמן)

כדאי לקרוא עוד באתר http://www.quartz-scheduler.org/.

אינטגרציה עם Grails

כפי שראינו, אין כל בעיה לקחת קובץ jar, לשתול אותו בפרויקט ולהשתמש בו. אולם, הדרך האלגנטית ביותר היא שימוש בתוסף. התוסף הוא למעשה פרויקט נפרד, המכיל את כל הספריות הדרושות, מחלקות עוטפות, וסקריפטים להקלה על ביצוע משימות נוספות.

דף התוספים המלא נמצא  בכתובת http://www.grails.org/plugins/.

התקנת התוסף מתבצעת בעזרת הפקודה

grails install-plugin quartz

מרגע זה התוסף קיים בפרויקט, וכן נוספו פקודות חדשות שניתן להריץ.

נריץ את הפקודה

grails create-job Test

ונראה שנוצר קובץ בשם TestJob בספריה Jobs.

נערוך את הקובץ:

Def execute(){

            println "Test job running at: ${new Date()}"

}

נריץ את האפליקציה ונראה שיש לנו משימה שרצה בצורה מחזורית.

 ניתן כעת גם לבצע תזמון דינמי בצורה הבאה  בכל מקום באפליקציה:

TestJob.schedule(executionDate)

זהו! הפשטות הזו נשמרת גם כשמגיעים לתכונות המתקדמות.

בפוסט הזה הכרנו תשתית מעולה לתזמון משימות בפלטפורמת JAVA, וכמו כן ראינו איך מערכת התוספים של GRAILS  מאפשרת חסם כניסה נמוך גם כשמשתמשים בטכנולוגיות מתקדמות.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s