Quartz (quartz)

quartz 端点提供有关由 Quartz 调度器管理的任务和触发器的信息。

获取已注册的组

任务和触发器被管理在组中。要获取已注册的任务和触发器组的列表,可以按照以下基于 curl 的示例发送 GET 请求到 /actuator/quartz

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

如果两个触发器具有相同的计划触发时间,则使用的优先级。

triggers.cron.*.expression

String

使用的 Cron 表达式。

triggers.cron.*.timeZone

String

解析表达式的时区(如果有)。

triggers.simple.*.previousFireTime

String

触发器上次触发的时间(如果有)。

triggers.simple.*.nextFireTime

String

触发器计划下一次触发的时间(如果有)。

triggers.simple.*.priority

Number

如果两个触发器具有相同的计划触发时间,则使用的优先级。

triggers.simple.*.interval

Number

两次执行之间的间隔(以毫秒为单位)。

triggers.dailyTimeInterval.*.previousFireTime

String

触发器上次触发的时间(如果有)。

triggers.dailyTimeInterval.*.nextFireTime

String

触发器计划下一次触发的时间(如果有)。

triggers.dailyTimeInterval.*.priority

Number

如果两个触发器具有相同的计划触发时间,则使用的优先级。

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

如果两个触发器具有相同的计划触发时间,则使用的优先级。

triggers.calendarInterval.*.interval

Number

加到触发时间以计算下一个触发器重复时间的间隔(以毫秒为单位)。

triggers.calendarInterval.*.timeZone

String

进行时间计算的时区(如果有)。

triggers.custom.*.previousFireTime

String

触发器上次触发的时间(如果有)。

triggers.custom.*.nextFireTime

String

触发器计划下一次触发的时间(如果有)。

triggers.custom.*.priority

Number

如果两个触发器具有相同的计划触发时间,则使用的优先级。

triggers.custom.*.trigger

String

自定义触发器实例的 toString 表示。

获取任务详情

要获取特定任务的详细信息,可以按照以下基于 curl 的示例发送 GET 请求到 /actuator/quartz/jobs/{groupName}/{jobName}

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

任务数据映射(key/value对,如果有)。

triggers

Array

与任务相关的触发器数组(如果有)。

triggers.[].group

String

触发器组的名称。

triggers.[].name

String

触发器的名称。

triggers.[].previousFireTime

String

触发器上次触发的时间(如果有)。

triggers.[].nextFireTime

String

触发器计划下一次触发的时间(如果有)。

triggers.[].priority

Number

如果两个触发器具有相同的计划触发时间,则使用的优先级。

获取触发器详情

要获取特定触发器的详细信息,可以按照以下基于 curl 的示例发送 GET 请求到 /actuator/quartz/triggers/{groupName}/{triggerName}

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

上述示例获取了由 samples 组和 example 名称标识的触发器的详细信息。

通用响应结构

响应具有通用结构以及一个特定于触发器类型的额外对象。支持以下五种类型:

  • cron 表示 CronTrigger

  • simple 表示 SimpleTrigger

  • dailyTimeInterval 表示 DailyTimeIntervalTrigger

  • calendarInterval 表示 CalendarIntervalTrigger

  • custom 表示其他触发器实现

下表描述了响应中通用元素的结构:

路径

类型

描述

group

String

组的名称。

name

String

触发器的名称。

description

String

触发器的描述(如果有)。

state

String

触发器的状态 (NONE, NORMAL, PAUSED, COMPLETE, ERROR, BLOCKED)。

type

String

触发器的类型 (calendarInterval, cron, custom, dailyTimeInterval, simple)。该类型决定包含类型特定详细信息的对象的键。

calendarName

String

与此触发器关联的日历名称(如果有)。

startTime

String

触发器应生效的时间(如果有)。

endTime

String

触发器应停止重复的时间(无论是否有剩余的重复次数)(如果有)。

previousFireTime

String

触发器上次触发的时间(如果有)。

nextFireTime

String

触发器计划下一次触发的时间(如果有)。

priority

Number

如果两个触发器具有相同的计划触发时间,则使用的优先级。

finalFireTime

String

触发器最后一次触发的时间(如果有)。

data

Object

任务数据映射(以名称为键,如果有)。

calendarInterval

Object

日历时间间隔触发器的详细信息(如果有,且类型为 calendarInterval)。

custom

Object

自定义触发器的详细信息(如果有,且类型为 custom)。

cron

Object

Cron 触发器的详细信息(如果有,且类型为 cron)。

dailyTimeInterval

Object

每日时间间隔触发器的详细信息(如果有,且类型为 dailyTimeInterval)。

simple

Object

简单触发器的详细信息(如果有,且类型为 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

两次执行之间的间隔(以毫秒为单位)。

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 表示。