SpringでQuartzはどう使いますか?

3568 ワード

背景:
前回の文章に続き、プロジェクトの中にはタイミングを合わせて工単の状態をチェックする必要があります。この時、私はQartzを使ってタスクスケジュールシステムを作りたいと思いました。この記事では、どのようにspringにquartzを入れるかを紹介します。
spring統合Quartz:
まず第一歩は、必ずpomファイルに関連するパッケージを導入することです。pom.xml:
 
     org.apache.logging.log4j
     log4j-core
     2.2
 

 
     org.quartz-scheduler
     quartz
     2.2.1
 
SpringでQuartzを使用して2つの方法で実現されています。1つ目はタスククラスの引き継ぎQuartzJobBeanで、2つ目は構成ファイルでタスククラスを定義する方法と実行方法で、クラスと方法は普通のクラスとすることができます。明らかに第二の方式は第一の方式よりずっと柔軟です。ここで使っているのは第二の構成方式です。皆さんは第一の構成方式を自分で試してみてもいいです。最初にspringプロファイルに来ました。





	
	

	



	
	



	
		
			
		
	

対応するOceanStatus Jobエンティティ類:
public class OceanStatusJob {
    public void doIt() {
		System.out.println("  job");
	}
}
ここでxmlファイルの内容を説明します。前に述べたQuarzの3つの要素を振り返ってみます。Schduler、Trigger、JobDetai&Job。xmlファイル、つまり上のいくつかのbeanオブジェクトに対応します。いくつかの点に注意してください。
  • つのschedulerは複数のTriggerに対応できます。beanオブジェクトを見ても分かるように、その属性はリストセットです。
  • のJobDetailは複数のjobに対応できます。これは実際にも理解できます。具体的な実現はjobで実現されますが、jobDetailを通じてjobを管理します。例えばゲームと外挂けのように、同じゲームで二つのクライアントを开けることができません。まだ二つのハンガーを买いますよね?外挂は管理ゲームのJobDetailに相当しますが、ゲームはJobを具体的に実现します。
  • jobは、メソッド名を自分で指定することができます。以前はjobインターフェースを実現することによってexecute方法を実現しました。現在は、jobDetaiの属性targetMethodによって実行方法を指定するだけでよいが、このjobDetailは、具体的な実施形態としてMethodInvokingJobDetailFactoryBeanを使用していることに留意されたい。
  • 文章の最後によく使うCron表現を付け加えます。
    自分で考える:
  • はどのようにタイミングタスクを動的に追加しますか?前は配置ファイルの形式を採用してspringとQuartzを統合しています。需要が比較的簡単であればこれで満足できますが、多くの場合、私達は新しいタスクを修正する必要があります。今は毎回修正または新規ジョブが追加された後、プロジェクトを再起動する必要があります。明らかにこのような方式は柔軟ではないです(結局便利です)。どうすればプロジェクトを再起動しない前提で、任務を修正したり追加したりできますか?
  • 添付:
    フィールド名
    許可された値
    許可された特殊文字

    0-59
    を選択します
    ポイント
    0-59
    を選択します
    時間
    0-23
    を選択します

    1-31
    を選択しますL W

    1-12 or JAN-DEC
    を選択します
    曜日
    1-7 or SUN-AT
    を選択しますL.
    年(オプションフィールド)
    empty,1970-2099
    を選択します
    “?”  :       
    
    “,”  :     
    
    “-”  :        
    
    “/”  :          。n/m   n  ,    m
    
    “L”  :              ,             X
    
    “W”  :             (     )
    
    “#”  :        X。6#3     3   
    
    2)Cron表現の例:
       5     :*/5 * * * * ?
    
       1      :0 */1 * * * ?
    
       23     :0 0 23 * * ?
    
         1     :0 0 1 * * ?
    
       1   1     :0 0 1 1 * ?
    
           23     :0 0 23 L * ?
    
            1     :0 0 1 ? * L
    
      26 、29 、33     :0 26,29,33 * * * ?
    
        0 、13 、18 、21      :0 0 0,13,18,21 * * ?