|
此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Boot 4.0.4! |
Quartz (quartz)
quartz 端点提供有关由 Quartz Scheduler 管理的作业和触发器的信息。
检索已注册的组
作业和触发器在组中进行管理。
要检索已注册的作业组和触发器组列表,请向 /actuator/quartz 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ 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" ]
}
}
检索已注册的作业名称
要检索已注册的作业名称列表,请向 /actuator/quartz/jobs 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ 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" ]
}
}
}
检索已注册的触发器名称
要检索已注册触发器名称的列表,请向 /actuator/quartz/triggers 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ 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" ]
}
}
}
检索作业组概览
要检索特定组中作业的概览,请向 /actuator/quartz/jobs/{groupName} 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ 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"
}
}
}
获取触发器组的概览
要检索特定组中触发器的概览,请向 /actuator/quartz/triggers/{groupName} 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ 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"
}
}
}
}
响应结构
响应包含特定组中触发器的概览。 触发器实现的具体详情可用。 下表描述了响应的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
组的名称。 |
|
|
该组是否已暂停。 |
|
|
按名称索引的 Cron 触发器(如果存在)。 |
|
|
按名称索引的简单触发器(如果存在)。 |
|
|
按名称键入的每日时间间隔触发器(如果存在)。 |
|
|
按名称键入的日历间隔触发器(如有)。 |
|
|
其他以名称为键的触发器(如果存在)。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
|
|
要使用的 Cron 表达式。 |
|
|
(如果指定)表达式将被解析所依据的时区。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
|
|
两次执行之间的间隔(毫秒)。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
|
|
用于计算下一次触发重复时间的间隔(毫秒),该间隔将被加到触发时间(fire time)上。 |
|
|
触发任务的星期几数组。 |
|
|
(如果设置了)在指定间隔开始触发的时间点。 |
|
|
(如已设置)在指定间隔内完成触发的时间点。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
|
|
用于计算下一次触发重复时间的间隔(毫秒),该间隔将被加到触发时间(fire time)上。 |
|
|
执行时间计算时所使用的时区(如果指定)。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
|
|
自定义触发器实例的 toString 表示形式。 |
获取作业的详细信息
要检索特定作业的详细信息,请向 /actuator/quartz/jobs/{groupName}/{jobName} 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ 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
} ]
}
如果数据映射(data map)中的某个键被标识为敏感信息,则其对应的值将被清理。
响应结构
响应包含作业的完整详细信息,包括与其关联的触发器摘要(如果存在)。 触发器按下次触发时间及优先级排序。 下表描述了响应的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
组的名称。 |
|
|
作业名称。 |
|
|
作业的描述(如有)。 |
|
|
作业实现类的完全限定名称。 |
|
|
作业在成为孤儿作业后是否应继续保留。 |
|
|
如果遇到“恢复”或“故障转移”情况,该任务是否应重新执行。 |
|
|
作业数据映射(键/值对形式),如有。 |
|
|
与此任务关联的触发器数组(如果存在)。 |
|
|
触发器组的名称。 |
|
|
触发器的名称。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
按需触发 Quartz 任务
要触发特定的 Quartz 任务,请向 /actuator/quartz/jobs/{groupName}/{jobName} 发送一个 POST 请求,如下方基于 curl 的示例所示:
$ curl 'http://localhost:8080/actuator/quartz/jobs/samples/jobOne' -i -X POST \
-H 'Content-Type: application/json' \
-d '{"state":"running"}'
上述示例演示了如何触发属于 samples 组且名为 jobOne 的作业。
响应将类似于以下内容:
HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 169
{
"group" : "samples",
"name" : "jobOne",
"className" : "org.springframework.scheduling.quartz.DelegatingJob",
"triggerTime" : "2026-03-19T10:58:23.668807281Z"
}
检索触发器的详细信息
要检索特定触发器的详细信息,请向 /actuator/quartz/triggers/{groupName}/{triggerName} 发送一个 GET 请求,如下方基于 curl 的示例所示:
$ curl 'http://localhost:8080/actuator/quartz/triggers/samples/example' -i -X GET
上述示例检索了由组 ID samples 和名称 example 标识的触发器的详细信息。
通用响应结构
响应具有通用结构,以及一个特定于触发器类型的附加对象。 支持五种类型:
-
cron表示CronTrigger -
simple表示SimpleTrigger -
dailyTimeInterval表示DailyTimeIntervalTrigger -
calendarInterval表示CalendarIntervalTrigger -
custom表示其他任何触发器实现
下表描述了响应中通用元素的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
组的名称。 |
|
|
触发器的名称。 |
|
|
触发器的描述(如有)。 |
|
|
触发器的状态( |
|
|
触发器类型( |
|
|
与此触发器关联的日历名称(如果存在)。 |
|
|
触发器生效的时间(如果有的话)。 |
|
|
无论是否还有剩余的重复次数,触发器都应在此时间停止重复。 |
|
|
触发器上次触发的时间(如果曾触发过)。 |
|
|
触发器下次计划触发的时间(如果存在)。 |
|
|
当两个触发器具有相同的计划触发时间时,使用的优先级。 |
|
|
触发器最后一次触发的时间(如果存在)。 |
|
|
按名称键入的作业数据映射(如存在)。 |
|
|
日历时间间隔触发器的详细信息(如有)。当 |
|
|
自定义触发器详情(如有)。当 |
|
|
Cron 触发器详细信息(如果存在)。当 |
|
|
每日时间间隔触发器的详细信息(如果存在)。当 |
|
|
简单的触发器详细信息(如果存在)。当 |
Cron触发器响应结构
Cron 触发器定义了用于确定其触发时间的 Cron 表达式。 此类触发器实现所生成的响应类似于以下内容:
HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 543
{
"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,
"finalFireTime" : "2020-12-30T02:00:00.000+00:00",
"data" : { },
"cron" : {
"expression" : "0 0 3 ? * 1,2,3,4,5",
"timeZone" : "Europe/Paris"
}
}
响应的大部分内容对所有触发器类型都是通用的。 响应中通用元素的结构已在前文描述。 下表描述了响应中专属于 Cron 触发器部分的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
Cron 触发器特定详情。 |
|
|
要使用的 Cron 表达式。 |
|
|
(如果指定)表达式将被解析所依据的时区。 |
简单触发器响应结构
简单触发器用于在指定的时间点触发一个任务(Job),并可选择按指定间隔重复执行。 此类触发器实现所产生的响应类似于以下内容:
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
}
}
响应的大部分内容对所有触发器类型都是通用的。 响应中通用元素的结构已在前文描述。 下表描述了响应中专属于简单触发器的部分的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
简单触发器的特定详细信息。 |
|
|
两次执行之间的间隔(毫秒)。 |
|
|
触发器应重复执行的次数,或设为 -1 表示无限次重复。 |
|
|
触发器已触发的次数。 |
每日时间间隔触发器响应结构
每日时间间隔触发器用于基于每日重复的时间间隔来触发任务(Job)。 此类触发器实现所生成的响应类似于以下内容:
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
}
}
响应的大部分内容对所有触发器类型均通用。 响应中通用元素的结构已在前文描述。 下表描述了每日时间间隔触发器所特有的响应部分的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
每日时间间隔触发器的具体详情。 |
|
|
用于计算下一次触发重复时间的间隔(毫秒),该间隔将被加到触发时间(fire time)上。 |
|
|
触发任务的星期几数组。 |
|
|
(如果设置了)在指定间隔开始触发的时间点。 |
|
|
(如已设置)在指定间隔内完成触发的时间点。 |
|
|
触发器应重复执行的次数,或设为 -1 表示无限次重复。 |
|
|
触发器已触发的次数。 |
日历间隔触发器响应结构
日历时间间隔触发器用于根据重复的日历时间间隔来触发任务(Job)。 此类触发器实现所生成的响应类似于以下内容:
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
}
}
响应的大部分内容对所有触发器类型都是通用的。 响应中通用元素的结构已在前文描述。 下表描述了日历间隔触发器(calendar interval triggers)特有响应部分的结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
日历间隔触发器的特定详细信息。 |
|
|
用于计算下一次触发重复时间的间隔(毫秒),该间隔将被加到触发时间(fire time)上。 |
|
|
执行时间计算时所使用的时区(如果指定)。 |
|
|
触发器已触发的次数。 |
|
|
是否在每天同一时间触发该触发器,而忽略夏令时转换。 |
|
|
当某天不存在当天的指定小时时,是否跳过。 |
自定义触发器响应结构
自定义触发器是任何其他实现。 此类触发器实现所产生的响应类似于以下内容:
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"
}
}
响应的大部分内容对所有触发器类型都是通用的。 响应中通用元素的结构已在之前描述过。 下表描述了响应中与自定义触发器相关的各部分结构:
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
自定义触发器特定详细信息。 |
|
|
自定义触发器实例的 toString 表示形式。 |