Quartz (quartz)

quartz エンドポイントは、Quartz スケジューラによって管理されるジョブとトリガーに関する情報を提供します。

登録済みグループの取得

ジョブとトリガーはグループで管理されます。登録されたジョブとトリガーグループのリストを取得するには、次の curl ベースの例に示すように、/actuator/quartz に GET リクエストを送信します。

$ curl 'http://localhost:8080/actuator/quartz' -i -X GET

結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 120

{
  "jobs" : {
    "groups" : [ "samples", "tests" ]
  },
  "triggers" : {
    "groups" : [ "samples", "DEFAULT" ]
  }
}

レスポンス構造

レスポンスには、登録されたジョブとトリガーのグループ名が含まれます。次の表は、レスポンスの構造を示しています。

パス タイプ 説明

jobs.groups

Array

ジョブグループ名の配列。

triggers.groups

Array

トリガーグループ名の配列。

登録されたジョブ名の取得

登録されたジョブ名のリストを取得するには、次の curl ベースの例に示すように、GET リクエストを /actuator/quartz/jobs に送信します。

$ curl 'http://localhost:8080/actuator/quartz/jobs' -i -X GET

結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 137

{
  "groups" : {
    "samples" : {
      "jobs" : [ "jobOne", "jobTwo" ]
    },
    "tests" : {
      "jobs" : [ "jobThree" ]
    }
  }
}

レスポンス構造

レスポンスには、各グループの登録済みジョブ名が含まれます。次の表は、レスポンスの構造を示しています。

パス タイプ 説明

groups

Object

名前でキー設定されたジョブグループ。

groups.*.jobs

Array

ジョブ名の配列。

登録されたトリガー名の取得

登録されたトリガー名のリストを取得するには、次の curl ベースの例に示すように、GET リクエストを /actuator/quartz/triggers に送信します。

$ curl 'http://localhost:8080/actuator/quartz/triggers' -i -X GET

結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 229

{
  "groups" : {
    "samples" : {
      "paused" : false,
      "triggers" : [ "3am-weekdays", "every-day", "once-a-week" ]
    },
    "DEFAULT" : {
      "paused" : false,
      "triggers" : [ "every-hour-tue-thu" ]
    }
  }
}

レスポンス構造

レスポンスには、各グループに登録されたトリガー名が含まれます。次の表は、レスポンスの構造を示しています。

パス タイプ 説明

groups

Object

名前でキー付けされたトリガーグループ。

groups.*.paused

Boolean

このトリガーグループが一時停止されているかどうか。

groups.*.triggers

Array

トリガー名の配列。

ジョブグループの概要の取得

特定のグループ内のジョブの概要を取得するには、次の curl ベースの例に示すように、GET リクエストを /actuator/quartz/jobs/{groupName} に送信します。

$ curl 'http://localhost:8080/actuator/quartz/jobs/samples' -i -X GET

前述の例では、samples グループ内のジョブの概要を取得します。結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 201

{
  "group" : "samples",
  "jobs" : {
    "jobOne" : {
      "className" : "org.springframework.scheduling.quartz.DelegatingJob"
    },
    "jobTwo" : {
      "className" : "org.quartz.Job"
    }
  }
}

レスポンス構造

レスポンスには、特定のグループ内のジョブの概要が含まれます。次の表は、レスポンスの構造を示しています。

パス タイプ 説明

group

String

グループの名前。

jobs

Object

名前でキー設定されたジョブの詳細。

jobs.*.className

String

ジョブ実装の完全修飾名。

トリガーグループの概要を取得する

特定のグループ内のトリガーの概要を取得するには、次の curl ベースの例に示すように、GET リクエストを /actuator/quartz/triggers/{groupName} に送信します。

$ curl 'http://localhost:8080/actuator/quartz/triggers/tests' -i -X GET

前述の例では、tests グループ内のトリガーの概要を取得します。結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 1268

{
  "group" : "tests",
  "paused" : false,
  "triggers" : {
    "cron" : {
      "3am-week" : {
        "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
        "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
        "priority" : 3,
        "expression" : "0 0 3 ? * 1,2,3,4,5",
        "timeZone" : "Europe/Paris"
      }
    },
    "simple" : {
      "every-day" : {
        "nextFireTime" : "2020-12-04T12:00:00.000+00:00",
        "priority" : 7,
        "interval" : 86400000
      }
    },
    "dailyTimeInterval" : {
      "tue-thu" : {
        "priority" : 5,
        "interval" : 3600000,
        "daysOfWeek" : [ 3, 5 ],
        "startTimeOfDay" : "09:00:00",
        "endTimeOfDay" : "18:00:00"
      }
    },
    "calendarInterval" : {
      "once-a-week" : {
        "previousFireTime" : "2020-12-02T14:00:00.000+00:00",
        "nextFireTime" : "2020-12-08T14:00:00.000+00:00",
        "priority" : 5,
        "interval" : 604800000,
        "timeZone" : "Etc/UTC"
      }
    },
    "custom" : {
      "once-a-year-custom" : {
        "previousFireTime" : "2020-07-14T16:00:00.000+00:00",
        "nextFireTime" : "2021-07-14T16:00:00.000+00:00",
        "priority" : 10,
        "trigger" : "com.example.CustomTrigger@fdsfsd"
      }
    }
  }
}

レスポンス構造

レスポンスには、特定のグループのトリガーの概要が含まれます。トリガー実装固有の詳細が利用可能です。次の表は、レスポンスの構造を示しています。

パス タイプ 説明

group

String

グループの名前。

paused

Boolean

グループが一時停止されているかどうか。

triggers.cron

Object

名前でキー指定された Cron トリガー (存在する場合)。

triggers.simple

Object

名前でキー指定された単純なトリガー(存在する場合)。

triggers.dailyTimeInterval

Object

名前でキー指定された毎日の時間間隔トリガー(存在する場合)。

triggers.calendarInterval

Object

名前でキー指定されたカレンダー間隔トリガー(存在する場合)。

triggers.custom

Object

名前でキー指定されたその他のトリガー(存在する場合)。

triggers.cron.*.previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

triggers.cron.*.nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

triggers.cron.*.priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

triggers.cron.*.expression

String

使用する Cron 式。

triggers.cron.*.timeZone

String

式が解決されるタイムゾーン(存在する場合)。

triggers.simple.*.previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

triggers.simple.*.nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

triggers.simple.*.priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

triggers.simple.*.interval

Number

2 回の実行間の間隔 (ミリ秒単位)。

triggers.dailyTimeInterval.*.previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

triggers.dailyTimeInterval.*.nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

triggers.dailyTimeInterval.*.priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

triggers.dailyTimeInterval.*.interval

Number

次のトリガー繰り返しの時間を計算するために、発火時間に追加される間隔 (ミリ秒単位)。

triggers.dailyTimeInterval.*.daysOfWeek

Array

実行する曜日の配列。

triggers.dailyTimeInterval.*.startTimeOfDay

String

指定された間隔で発射を開始する時刻(ある場合)。

triggers.dailyTimeInterval.*.endTimeOfDay

String

指定された間隔で発射を完了する時刻(ある場合)。

triggers.calendarInterval.*.previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

triggers.calendarInterval.*.nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

triggers.calendarInterval.*.priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

triggers.calendarInterval.*.interval

Number

次のトリガー繰り返しの時間を計算するために、発火時間に追加される間隔 (ミリ秒単位)。

triggers.calendarInterval.*.timeZone

String

時間計算が実行されるタイムゾーン(存在する場合)。

triggers.custom.*.previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

triggers.custom.*.nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

triggers.custom.*.priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

triggers.custom.*.trigger

String

カスタムトリガーインスタンスの toString 表現。

ジョブの詳細を取得する

特定のジョブの詳細を取得するには、次の curl ベースの例に示すように、/actuator/quartz/jobs/{groupName}/{jobName} に対して GET リクエストを実行します。

$ curl 'http://localhost:8080/actuator/quartz/jobs/samples/jobOne' -i -X GET

上記の例では、samples グループと jobOne 名で識別されるジョブの詳細を取得します。結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 609

{
  "group" : "samples",
  "name" : "jobOne",
  "description" : "A sample job",
  "className" : "org.springframework.scheduling.quartz.DelegatingJob",
  "durable" : false,
  "requestRecovery" : false,
  "data" : {
    "password" : "secret",
    "user" : "admin"
  },
  "triggers" : [ {
    "group" : "samples",
    "name" : "every-day",
    "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
    "nextFireTime" : "2020-12-04T12:00:00.000+00:00",
    "priority" : 7
  }, {
    "group" : "samples",
    "name" : "3am-weekdays",
    "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
    "priority" : 3
  } ]
}

データマップ内のキーが機密情報として識別された場合、その値はサニタイズされます。

レスポンス構造

レスポンスには、ジョブの完全な詳細と、それに関連付けられているトリガーの概要(存在する場合)が含まれます。トリガーは、次回の起動時間と優先度で並べ替えられます。次の表は、レスポンスの構造を示しています。

パス タイプ 説明

group

String

グループの名前。

name

String

ジョブの名前。

description

String

ジョブの説明(ある場合)。

className

String

ジョブ実装の完全修飾名。

durable

Boolean

ジョブが孤立した後も保存されたままにするかどうか。

requestRecovery

Boolean

「リカバリ」または「フェイルオーバー」の状況が発生した場合にジョブを再実行する必要があるかどうか。

data.*

String

ジョブデータは、存在する場合はキー / 値のペアとしてマップされます。

triggers

Array

ジョブに関連付けられているトリガーの配列(存在する場合)。

triggers.[].group

String

トリガーグループの名前。

triggers.[].name

String

トリガーの名前。

triggers.[].previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

triggers.[].nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

triggers.[].priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

トリガーの詳細を取得する

特定のトリガーに関する詳細を取得するには、次の curl ベースの例に示すように、/actuator/quartz/triggers/{groupName}/{triggerName} に対して GET リクエストを実行します。

$ curl 'http://localhost:8080/actuator/quartz/triggers/samples/example' -i -X GET

上記の例では、samples グループと example 名で識別されるトリガーの詳細を取得します。

共通レスポンス構造

レスポンスには共通の構造と、トリガーの型に固有の追加オブジェクトがあります。サポートされている型は次の 5 つです。

  •  CronTriggercron 

  •  SimpleTriggersimple 

  •  DailyTimeIntervalTriggerdailyTimeInterval 

  •  CalendarIntervalTriggercalendarInterval 

  • その他のトリガー実装の場合は custom 

次の表は、レスポンスの共通要素の構造を示しています。

パス タイプ 説明

group

String

グループの名前。

name

String

トリガーの名前。

description

String

トリガーの説明(ある場合)。

state

String

トリガーの状態(NONENORMALPAUSEDCOMPLETEERRORBLOCKED)。

type

String

トリガーの型 (calendarIntervalcroncustomdailyTimeIntervalsimple)。型固有の詳細を含むオブジェクトのキーを決定します。

calendarName

String

このトリガーに関連付けられているカレンダーの名前(存在する場合)。

startTime

String

トリガーが有効になる時間(ある場合)。

endTime

String

残りの繰り返しの有無に関係なく、トリガーが繰り返しを終了する時間。

previousFireTime

String

トリガーが最後に起動した時刻(ある場合)。

nextFireTime

String

トリガーが次に起動する予定の時刻(ある場合)。

priority

Number

2 つのトリガーのスケジュールされた発動時刻が同じ場合に使用する優先順位。

finalFireTime

String

トリガーが最後に発動する時刻(ある場合)。

data

Object

名前でキー付けされたジョブデータマップ (存在する場合)。

calendarInterval

Object

カレンダー時間間隔トリガーの詳細(存在する場合)。type が calendarInterval の場合に存在します。

custom

Object

カスタムトリガーの詳細 (存在する場合)。type が custom の場合に存在します。

cron

Object

Cron トリガーの詳細 (存在する場合)。type が cron の場合に存在します。

dailyTimeInterval

Object

毎日の時間間隔トリガーの詳細(ある場合)。type が dailyTimeInterval の場合に存在します。

simple

Object

単純なトリガーの詳細(ある場合)。type が simple の場合に存在します。

Cron トリガーレスポンス構造

cron トリガーは、トリガーをいつ起動するかを決定するために使用される cron 式を定義します。このようなトリガー実装の結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 490

{
  "group" : "samples",
  "name" : "example",
  "description" : "Example trigger",
  "state" : "NORMAL",
  "type" : "cron",
  "calendarName" : "bankHolidays",
  "startTime" : "2020-11-30T17:00:00.000+00:00",
  "endTime" : "2020-12-30T03:00:00.000+00:00",
  "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
  "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
  "priority" : 3,
  "data" : { },
  "cron" : {
    "expression" : "0 0 3 ? * 1,2,3,4,5",
    "timeZone" : "Europe/Paris"
  }
}

レスポンスの大部分は、すべてのトリガー型に共通です。レスポンスの共通要素の構造については、前に説明しました。次の表は、cron トリガーに固有のレスポンス部分の構造を示しています。

パス タイプ 説明

cron

Object

Cron トリガー固有の詳細。

cron.expression

String

使用する Cron 式。

cron.timeZone

String

式が解決されるタイムゾーン(存在する場合)。

シンプルなトリガーレスポンス構造

シンプルなトリガーは、特定の時点でジョブを起動するために使用され、オプションで指定された間隔で繰り返し実行されます。このようなトリガー実装の結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 549

{
  "group" : "samples",
  "name" : "example",
  "description" : "Example trigger",
  "state" : "NORMAL",
  "type" : "simple",
  "calendarName" : "bankHolidays",
  "startTime" : "2020-11-30T17:00:00.000+00:00",
  "endTime" : "2020-12-30T03:00:00.000+00:00",
  "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
  "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
  "priority" : 7,
  "finalFireTime" : "2020-12-29T17:00:00.000+00:00",
  "data" : { },
  "simple" : {
    "interval" : 86400000,
    "repeatCount" : -1,
    "timesTriggered" : 0
  }
}

レスポンスの大部分は、すべてのトリガー型に共通です。レスポンスの共通要素の構造については、前に説明しました。次の表は、単純なトリガーに固有のレスポンス部分の構造を示しています。

パス タイプ 説明

simple

Object

シンプルなトリガー固有の詳細。

simple.interval

Number

2 回の実行間の間隔 (ミリ秒単位)。

simple.repeatCount

Number

トリガーを繰り返す回数。無期限に繰り返す場合は -1 を指定します。

simple.timesTriggered

Number

トリガーがすでに起動された回数。

毎日の時間間隔トリガーレスポンス構造

毎日の時間間隔トリガーは、毎日繰り返される時間間隔に基づいてジョブを起動するために使用されます。このようなトリガー実装の結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 667

{
  "group" : "samples",
  "name" : "example",
  "description" : "Example trigger",
  "state" : "PAUSED",
  "type" : "dailyTimeInterval",
  "calendarName" : "bankHolidays",
  "startTime" : "2020-11-30T17:00:00.000+00:00",
  "endTime" : "2020-12-30T03:00:00.000+00:00",
  "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
  "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
  "priority" : 5,
  "finalFireTime" : "2020-12-30T18:00:00.000+00:00",
  "data" : { },
  "dailyTimeInterval" : {
    "interval" : 3600000,
    "daysOfWeek" : [ 3, 5 ],
    "startTimeOfDay" : "09:00:00",
    "endTimeOfDay" : "18:00:00",
    "repeatCount" : -1,
    "timesTriggered" : 0
  }
}

レスポンスの大部分は、すべてのトリガー型に共通です。レスポンスの共通要素の構造については、前に説明しました。次の表は、毎日の時間間隔トリガーに固有のレスポンス部分の構造を示しています。

パス タイプ 説明

dailyTimeInterval

Object

毎日の時間間隔トリガーの特定の詳細。

dailyTimeInterval.interval

Number

次のトリガー繰り返しの時間を計算するために、発火時間に追加される間隔 (ミリ秒単位)。

dailyTimeInterval.daysOfWeek

Array

実行する曜日の配列。

dailyTimeInterval.startTimeOfDay

String

指定された間隔で発射を開始する時刻(ある場合)。

dailyTimeInterval.endTimeOfDay

String

指定された間隔で発射を完了する時刻(ある場合)。

dailyTimeInterval.repeatCount

Number

トリガーを繰り返す回数。無期限に繰り返す場合は -1 を指定します。

dailyTimeInterval.timesTriggered

Number

トリガーがすでに起動された回数。

カレンダー間隔トリガーレスポンス構造

カレンダー間隔トリガーは、カレンダーの時間間隔の繰り返しに基づいてジョブを起動するために使用されます。このようなトリガー実装の結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 669

{
  "group" : "samples",
  "name" : "example",
  "description" : "Example trigger",
  "state" : "NORMAL",
  "type" : "calendarInterval",
  "calendarName" : "bankHolidays",
  "startTime" : "2020-11-30T17:00:00.000+00:00",
  "endTime" : "2020-12-30T03:00:00.000+00:00",
  "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
  "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
  "priority" : 5,
  "finalFireTime" : "2020-12-28T17:00:00.000+00:00",
  "data" : { },
  "calendarInterval" : {
    "interval" : 604800000,
    "timeZone" : "Etc/UTC",
    "timesTriggered" : 0,
    "preserveHourOfDayAcrossDaylightSavings" : false,
    "skipDayIfHourDoesNotExist" : false
  }
}

レスポンスの大部分は、すべてのトリガー型に共通です。レスポンスの共通要素の構造については、前に説明しました。次の表は、カレンダー間隔トリガーに固有のレスポンス部分の構造を示しています。

パス タイプ 説明

calendarInterval

Object

カレンダー間隔トリガー固有の詳細。

calendarInterval.interval

Number

次のトリガー繰り返しの時間を計算するために、発火時間に追加される間隔 (ミリ秒単位)。

calendarInterval.timeZone

String

時間計算が実行されるタイムゾーン(存在する場合)。

calendarInterval.timesTriggered

Number

トリガーがすでに起動された回数。

calendarInterval.preserveHourOfDayAcrossDaylightSavings

Boolean

夏時間の移行に関係なく、同じ時間にトリガーを起動するかどうか。

calendarInterval.skipDayIfHourDoesNotExist

Boolean

特定の日にその時間が存在しない場合、スキップするかどうか。

カスタムトリガーレスポンス構造

カスタムトリガーは、その他の実装です。このようなトリガー実装の結果のレスポンスは次のようになります。

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 457

{
  "group" : "samples",
  "name" : "example",
  "description" : "Example trigger.",
  "state" : "NORMAL",
  "type" : "custom",
  "calendarName" : "bankHolidays",
  "startTime" : "2020-11-30T17:00:00.000+00:00",
  "endTime" : "2020-12-30T03:00:00.000+00:00",
  "previousFireTime" : "2020-12-04T03:00:00.000+00:00",
  "nextFireTime" : "2020-12-07T03:00:00.000+00:00",
  "priority" : 10,
  "custom" : {
    "trigger" : "com.example.CustomTrigger@fdsfsd"
  }
}

レスポンスの大部分は、すべてのトリガー型に共通です。レスポンスの共通要素の構造については、前に説明しました。次の表は、カスタムトリガーに固有のレスポンス部分の構造を示しています。

パス タイプ 説明

custom

Object

カスタムトリガー固有の詳細。

custom.trigger

String

カスタムトリガーインスタンスの toString 表現。