ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บน Platform

RUK-COM PAAS / APPLICATION SETTINGS

การตั้งเวลา Job ด้วย Quartz

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

วัตถุประสงค์

บทความนี้อธิบายการตั้งเวลา Job ด้วย Quartz บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

ควอตซ์เป็นบริการจัดตารางเวลางาน open-source ที่มีฟีเจอร์ครบถ้วนซึ่งสามารถรวมหรือใช้ร่วมกับ Application Java ใดก็ได้ตั้งแต่ Application แบบ stand-alone ที่เล็กที่สุดไปจนถึงระบบอีคอมเมิร์ซที่ใหญ่ที่สุด Quartz สามารถใช้เพื่อสร้างตารางเวลาที่เรียบง่ายหรือซับซ้อนสำหรับการดำเนินงานหลายสิบ ร้อย หรือแม้แต่หมื่นงาน; งานที่มีการกำหนดงาน Java มาตรฐานเป็นส่วนประกอบอาจมีการดำเนินการแทบทุกอย่างที่คุณตั้งโปรแกรมไว้ให้ทำ

หาก Application ของคุณมีงานที่ต้องเกิดขึ้นในช่วงเวลาใดก็ตามหรือหากระบบของคุณมีงานบำรุงรักษาที่เกิดขึ้นอีก Quartz อาจเป็นโซลูชันที่เหมาะสมที่สุดของคุณ

มาดูกันว่า Quartz ทำงานอย่างไรใน Cloud

การสร้าง Environment

1. เข้าสู่ระบบ Ruk-Com Cloud Dashboard

2. คลิกปุ่ม New Environment

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. เลือก Tomcat เป็น Application Server และตั้งค่าขีดจำกัด cloudlet จากนั้นใส่ชื่อ environment ตัวอย่างเช่นควอตซ์และคลิกสร้าง

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

รอซักครู่เพื่อสร้าง environment ของคุณ

การสร้าง Application

1. สร้างเว็บ Application ของคุณ (ในกรณีของเราใช้ Application Maven) และเพิ่มไฟล์ pom.xml เพื่อรวม Quartz libraries เข้ากับโปรเจกต์ของคุณ

<!-- 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>

2. สร้างโปรเจกต์ของคุณ

3. สร้าง Java class ใหม่ซึ่งจะดำเนินการกับงานของคุณและนี่คือตัวอย่างซึ่งแสดงเวลาของ Server:

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());
    }
}

4. สร้าง Servlet ใหม่ (คุณสามารถใช้ logic อื่นได้อย่างง่ายดาย) และระบุ Quartz trigger เพื่อกำหนดเหตุการณ์ตารางเวลาที่ 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";
    }
}



5. สร้างโปรเจกต์ของคุณเป็นไฟล์สงคราม

DeployApplication

1. กลับไปที่หน้า Ruk-Com Cloud Dashboard และอัปโหลดไฟล์ WAR ที่คุณเพิ่งสร้างขึ้น

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. Deploy Application ของคุณกับ environment ที่สร้างไว้ก่อนหน้านี้

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. เปิดแอปของคุณใน Browser และตรวจสอบผลลัพธ์ ในกรณีของเราให้ไปที่ quartz context (http://{env_name}.{hoster_domain}/quartz ตามการแมป Servlet “QuartzServlet”) และตรวจสอบบันทึกการใช้งาน Application logs

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

คุณจะเห็นการจัดตารางงานโดยใช้ Quartz ทำงานได้อย่างมีเสน่ห์

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เราหวังว่าคำแนะนำเกี่ยวกับการ deploy Quartz จะเป็นประโยชน์สำหรับคุณ