ジョブコード(HelloQuartzJob.groovy)
import org.quartz.*
class HelloQuartzJob implements Job
{
// ジョブ実行メソッド
void execute(JobExecutionContext context)
throws JobExecutionException
{
println("Hello, Quartz!" + new Date())
}
}
quartz設定ファイル(myquartz.properties)
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.misfireThreshold = 60000
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
# データソースの設定
org.quartz.dataSource.QuartzDS.driver = org.postgresql.Driver
org.quartz.dataSource.QuartzDS.URL = jdbc:postgresql://localhost:5432/quartz
org.quartz.dataSource.QuartzDS.user = postgres
org.quartz.dataSource.QuartzDS.password = postgres
org.quartz.dataSource.QuartzDS.maxConnections = 10
org.quartz.dataSource.QuartzDS.validationQuery = select 1
# JDBC JobStore設定
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = QuartzDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.isClustered = false
org.quartz.jobStore.clusterCheckinInterval = 15000
org.quartz.jobStore.maxMisfiresToHandleAtATime = 20
org.quartz.jobStore.dontSetAutoCommitFalse = false
org.quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE
org.quartz.jobStore.txIsolationLevelSerializable = false
org.quartz.jobStore.acquireTriggersWithinLock = false
quartzスタンドアロン実行用コード(StartQuartz.groovy)(exitと入力すると終了する)
import org.quartz.*
import org.quartz.impl.*
// スケジューラ取得
sf = new StdSchedulerFactory("./myquartz.properties")
//sched = sf.getScheduler()
// スケジューラを開始
//sched.start();
server = new QuartzServer()
server.serve(sf, true)
ジョブスケジューリング用コード(RegisterHelloQuartzJob.groovy)
import org.quartz.*
import org.quartz.impl.*
// スケジューラ取得
sf = new StdSchedulerFactory("./myquartz.properties")
sched = sf.getScheduler()
// ジョブ定義
JobDetail job = new JobDetail(
// ジョブ名
"job1",
// グループ名
"group1",
// ジョブクラス
HelloQuartzJob.class
)
// cron風のtrigger
trigger = new CronTrigger(
// トリガー名
"trigger1",
// グループ名
"group1",
// ジョブ名
"job1",
// グループ名
"group1",
// 月曜日から金曜日の21時
"0 0 21 ? * MON-FRI");
sched.scheduleJob(job, trigger)
sched.shutdown(true)
実行するときは、コマンドプロンプトから
groovy StartQuartz.groovyでスタンドアロンで実行させ、
別のコマンドプロンプトからgroovy RegisterHelloQuartzJob.groovyで
ジョブを登録します。
0 件のコメント:
コメントを投稿