คู่มือ Quartz Scheduling สำหรับ การตั้งค่า Application
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
ควอตซ์เป็นบริการจัดตารางงานโอเพ่นซอร์สที่มีคุณสมบัติครบถ้วนซึ่งสามารถบูรณาการหรือใช้ร่วมกับแอปพลิเคชัน Java ใดๆก็ได้ตั้งแต่แอปพลิเคชันเดี่ยวที่เล็กที่สุดไปจนถึงระบบอีคอมเมิร์ซที่ใหญ่ที่สุดควอตซ์สามารถใช้เพื่อสร้างตารางเวลาที่เรียบง่ายหรือซับซ้อนสำหรับการดำเนินงานนับสิบร้อยหรือแม้แต่หลายหมื่นงานงานที่มีการกำหนดงานให้เป็นส่วนประกอบ Java มาตรฐานที่อาจดำเนินการแทบทุกอย่างที่คุณสามารถตั้งโปรแกรมให้ทำ
หากแอปพลิเคชันของคุณมีงานที่จำเป็นต้องเกิดขึ้นในช่วงเวลาใดก็ตามหรือหากระบบของคุณมีงานบำรุงรักษาที่เกิดซ้ำ Quartz อาจเป็นโซลูชันในอุดมคติของคุณ
มาดูกันว่า Quarts ทำงานอย่างไรในระบบคลาวด์!
สร้าง Environment
-
เข้าสู่ระบบแดชบอร์ดแพลตฟอร์ม
-
สร้าง Environment ใหม่
3. เลือกแมวตัวผู้เป็นแอปพลิเคชันเซิร์ฟเวอร์ของคุณและตั้งค่าขีดจำกัดของ Cloudlet จากนั้นพิมพ์ชื่อ Environment ของคุณเช่นควอตซ์และคลิกสร้าง.
รอสักครู่เพื่อสร้าง Environment ของคุณ
สร้างแอปพลิเคชัน
- สร้างเว็บแอปพลิเคชันของคุณ (ในกรณีของเราเราใช้แอปพลิเคชันที่ใช้ Maven) และเพิ่มการอ้างอิงต่อไปนี้ให้กับคุณpom.xmlไฟล์เพื่อรวมไลบรารี Quartz เข้ากับโครงการของคุณ:
คัดลอก xml
<!-- Quartz API -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.logging</artifactId>
<version>1.1.1</version>
</dependency>
-
สร้างโครงการของคุณด้วยการพึ่งพา
-
สร้างคลาส Java ใหม่ซึ่งจะใช้งานของคุณนี่คือตัวอย่างซึ่งแสดงเวลาเซิร์ฟเวอร์:
จาวาคัดลอก
package com;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job
{
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("Server Time: " + new Date());
}
}
- สร้างใหม่เซิร์ฟเล็ต(คุณสามารถใช้ตรรกะในระดับอื่นได้อย่างง่ายดาย) และระบุทริกเกอร์ Quartz เพื่อกำหนดว่าเมื่อใดที่ตัวกำหนดเวลาเหตุการณ์ Quartz จะรันงานข้างต้นของคุณในกรณีของเราเราได้สร้างขึ้นQuartzServlet.javaซึ่งมีคำสั่ง (การบันทึกซึ่งใช้งานในคลาส HelloJob) ที่กำลังดำเนินการทุกนาที
จาวาคัดลอก
package com;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
JobDetail job = new JobDetail();
job.setName("dummyJobName");
job.setJobClass(HelloJob.class);
CronTrigger trigger = new CronTrigger();
trigger.setName("TriggerName");
trigger.setCronExpression("0 */1 * * * ?");
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException ex) {
Logger.getLogger(QuartzServlet.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParseException ex) {
Logger.getLogger(QuartzServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Short description";
}
}
- สร้างโครงการของคุณให้เป็นสงครามไฟล์.
ปรับใช้แอปพลิเคชัน
- กลับไปที่แดชบอร์ดแพลตฟอร์มแล้วอัปโหลดสงครามไฟล์คุณเพิ่งสร้างขึ้น
2. ปรับใช้แอปพลิเคชันของคุณกับ Environment ที่คุณสร้างไว้ก่อนหน้านี้
3. เปิดแอปของคุณในเบราว์เซอร์และตรวจสอบผลลัพธ์ในกรณีของเราเราต้องไปที่บริบทของควอตซ์ (http://{env_name}.{hoster_domain}/quartz ตามการแมป Servlet “QuartzServlet”) และตรวจสอบบันทึกแอปพลิเคชันของเรา
อย่างที่คุณเห็นการจัดตารางงานโดยใช้ Quartz นั้นช่างมีเสน่ห์
หวังว่าคำแนะนำเกี่ยวกับการ Deploy Quartz นี้จะเป็นประโยชน์สำหรับคุณ!