12/08/2018, 16:11

Java Quartz Scheduler

Chắc hẳn ai trong chúng ta cũng đã từng gặp phải bài toán lập lịch. Ví dụ như đồng bộ dữ liệu khách hàng sau mỗi 5 phút, hoặc chạy các job xuất báo cáo vào 6h chiều ngày thứ 6 hàng tuần, hoặc gửi email cho khách hàng về tỉ giá giao dịch chứng khoán đầu ngày giao dịch v.v... Thư viện Java Quartz ...

Chắc hẳn ai trong chúng ta cũng đã từng gặp phải bài toán lập lịch. Ví dụ như đồng bộ dữ liệu khách hàng sau mỗi 5 phút, hoặc chạy các job xuất báo cáo vào 6h chiều ngày thứ 6 hàng tuần, hoặc gửi email cho khách hàng về tỉ giá giao dịch chứng khoán đầu ngày giao dịch v.v... Thư viện Java Quartz giúp bạn dễ dàng xử lý được các bài toán như vậy.

Hôm nay chúng ta sẽ tạo 1 project demo về việc sử dụng thư viện Quartz. Hãy tạo 1 maven project với cấu trúc như sau:

Trong file pom.xml chúng ta sẽ khai báo sử dụng thư viện Quartz như sau:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>vuta.quartz.example</groupId>
	<artifactId>quartz-scheduler-example</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<name>Quartz Scheduler :: example</name>
	<url>http://maven.apache.org</url>

	<properties>
		<quartz.version>2.2.1</quartz.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>${quartz.version}</version>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz-jobs</artifactId>
			<version>${quartz.version}</version>
		</dependency>
	</dependencies>
</project>

Quartz có 3 thành phần cơ bản:

  • Task/Job: Đây chính là các tác vụ cần thực thi trong chương trình(chứa code xử lý business logic)
  • Listener: Đây là 1 thành phần của framework, framework sẽ gọi đến thành phần này tạo cho bạn cơ hội chạy code trong một số trường hợp như khi tác vụ bắt đầu, kết thúc hoặc bị từ chối (bị cấm) .
  • Trigger: Tạo ra mối quan hệ giữa 2 thành phần kể trên, và có khả năng thiết lập các khoảng thời gian theo mẫu hình để tác vụ có thể được thực thi(Ví dụ: mỗi 5 phút, 5h sáng hàng ngày, ...)

1. Job task

Job task đại diện cho các tác vụ mà chương trình của bạn phải cần phải xử lý. Ví dụ như tổng hợp tỉ giá giao dịch chứng khoán trong cơ sở dữ liệu và gửi email về số liệu cho khách hàng, xuất báo cáo, ... có thể là bất cứ nghiệp vụ nào khác             </div>
            
            <div class=

0