您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
已安排的作业概览
Monetization 提供了一个作业调度器和一组预先安排在 指定时间运行的作业。
下表列出了 Monetization 提供的预先安排的作业以及安排的运行时间(列出的所有时间均采用世界协调时间 (UTC))。此外,还列出了每个作业的触发器。
| 作业 | 说明 | 时间表(世界协调时间) | 触发器 |
|---|---|---|---|
| 每月开发者税率 | 从税费引擎中提取每个开发者的税率,并使用修订后的税率更新开发者 实体。 | 每月第一天上午 5:45 | MINT.MONTHLY_DEV_TAXRATE@@@ |
| 续订 | 针对有效费率方案应用周期性费用,或针对从当天开始的未来费率方案应用新费用。 | 每天午夜过后 5 秒 | MINT.RENEW_SUBSCRIPTIONS@@@ |
| XeFeed 更新程序 | 获取每种受支持货币的美元汇率。 | 每天午夜过后 1 秒 | MINT.XEFEED@@@ |
| 续订开发者费率方案 | 滚动费率方案的续订日期并计算提前终止费用。 | 每天凌晨 2:20 | MINT.RENEW_DEV_RATEPLAN@@@ |
| 重试交易中继 | 注意:此作业已废弃,对 Monetization 没有影响。 | 每天凌晨 4:30 | MINT.RETRY_TX_RELAY@@@ |
| 交易清理器 | 注意:此作业已废弃,对 Monetization 没有影响。 | 每天凌晨 5:30 | MINT.TX_CLEANSER@@@ |
| 开发者余额审核 | 审核开发者账号余额。将当前用量和预付费 余额/后付费信用额度复制到审核表,然后从 开发者账号中扣除当前用量,并将用量余额重置为零。 | 每月第一天午夜过后 5 秒 | MINT.DEVELOPER_BALANCE_AUDIT@@@ |
| 每月结算文档 | 生成结算文档。 注意 :Apigee 不再支持从 Apigee Edge Monetization 生成结算文档。 请参阅停用。 |
每月 11 日午夜过后 1 分钟 | MINT.MONTLY_BILLING_DOCS@@@ |
| 开发者费率方案计数器 | 注意:此作业已废弃,对 Monetization 没有影响。 | 每天午夜过后 3 秒 | MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@ |
| 每日费用 | 重新计算所有每小时交易总额,并使用这些总额计算 前一天的每日总额。 | 每天凌晨 1:20 | MINT.CHARGE_DAILY@@@ |
| 每小时费用 | 计算每 15 分钟的所有交易总额。 | 每 15 分钟过后 1 分钟 | MINT.CHARGE_HOURLY@@@ |
| 刷新通知配置 | 重新为所有通知条件编制索引。 | 每隔 5 分钟 | MINT.REFRESH_NOTIFICATION_CONFIG@@@ |
| 发送电子邮件通知 | 发送累积的电子邮件通知 | 每小时 | MINT.EMAIL_NOTIFICATION@@@ |
| 刷新限额 | 注意:此作业已废弃,对 Monetization 没有影响。 | 不适用(从不执行) | MINT.REFRESH_LIMIT@@@ |
除了上面列出的作业之外,您还可以通过事件 通知启用作业,如下表所示。如需了解详情,请参阅设置通知。
| 作业 | 说明 | 时间表 | 触发器 |
|---|---|---|---|
| 新软件包通知 | 向所有开发者发送通知,告知他们有新的 API 软件包可用。 |
运行一次 - 在启用作业的当天晚上 9:00 运行。
注意:无论您是否配置了导致作业多次执行的 |
MINT.NEW_PACKAGE_NOTIFY@@@ |
| 新的临时通知 | 向所有开发者发送通知,告知他们有新的 API 产品在特定 地理市场中可用。 |
运行一次 - 在启用作业的当天晚上 9:00 运行。
注意:无论您是否配置了导致作业多次执行的 |
MINT.ADHOC_NOTIFY@@@ |
| 新产品通知 | 向所有开发者发送通知,告知他们有新的 API 产品可用。 |
运行一次 - 在启用作业的当天晚上 9:00 运行。
注意:无论您是否配置了导致作业多次执行的 |
MINT.NEW_PRODUCT_NOTIFY@@@ |
| 新费率方案通知 |
向受影响的开发者发送通知,告知他们有新的费率方案可用。所有 订阅父级费率方案的开发者都会收到新费率方案已 生效的通知。 此外:
|
在新费率方案的开始日期凌晨 4:30 运行。 | MINT.NEW_RATEPLAN_NOTIFY@@@ |
| 新条款及条件 | 向受影响的开发者发送通知,告知他们新的或修订后的条款及条件 已发布(且开发者尚未接受)。 | 在新条款及条件的开始日期前 30 天、7 天和 1 天 晚上 9:00 运行。 | MINT.TNC_ACCEPTANCE_NOTIFY@@@ |
| 即将到期的费率方案 | 向受影响的开发者发送通知,提前警告他们费率方案 即将到期。 | 在费率方案到期前 30 天、7 天和 1 天晚上 9:00 运行。 | MINT.EXPIRING_RATE_PLAN_NOTIFY@@@ |
使用 API 管理 Monetization 作业时间表
以下部分介绍了如何使用 API 管理 Monetization 作业时间表:
如需详细了解本部分中介绍的 API,请参阅 API 参考中的已安排的作业。
配置触发器
调度器依赖于触发器来执行作业。当预定作业的关联 触发器执行时,该作业也会执行。触发器的属性用于配置作业执行,通过设置这些属性的 值,您可以控制作业执行的特征,例如作业的 执行时间和执行频率。
最常见的两种触发器类型是 Cron 触发器 和简单
触发器。Cron 触发器具有 cronExpression 属性,用于指定
执行时间表。简单触发器没有 cronExpression 属性;您
需要指定 startTime 以指明触发器何时生效,还可以选择指定 endTime。
触发器属性如下(列出的所有时间均采用世界协调时间 (UTC)):
| 属性 | 说明 |
|---|---|
cronExpression |
用于为触发器创建执行时间表的 Cron 表达式,例如:“每周一至周五上午 8:00
”或“每月最后一个周五凌晨 1:30”。如需了解详情,请参阅
构建 Cron 表达式。
指定此属性会将触发器定义为 Cron 触发器。 注意:如果同时指定了 |
enabled |
用于指明是否启用触发器以执行作业的标志。可以是以下某个值:
|
endTime |
触发器时间表不再生效的时间(采用纪元格式)。 |
group |
触发器将在其中执行的服务器类型。例如,如果触发器应在管理服务器中执行,则该值应设置为 management-server。如果触发器应在消息
处理服务器中执行,则该值应设置为 message-processor。 |
id |
触发器的标识。 |
jobId |
要执行的作业的标识。 |
name |
用于标识触发器的唯一名称。 |
priority |
如果安排了多个触发器在同一时间执行,则为这些触发器的相对执行优先级。
值越小,优先级越高。例如,如果安排了两个触发器
在同一时间执行,并且一个触发器的优先级为 1,另一个触发器的优先级为 2,则优先级为 1 的触发器会先执行。
仅当多个触发器的执行时间完全相同时,此属性才适用。 |
startTime |
仅适用于简单触发器。
触发器时间表生效的时间(采用纪元格式)。 注意:如果同时指定了 |
suiteId |
用于指定通知是系统级通知套件还是默认级通知套件
的一部分的标志。有效值为 DEFAULT 或 SYSTEM,或
您可以指定自己的唯一套件名称。 |
triggerDataMap |
锁定键 custom_lock_key,用于防止多个服务器同时执行同一作业。 |
构建 Cron 表达式
Cron 表达式是一个由六个或七个字段(由空格分隔)组成的字符串。该
表达式表示一组时间,通常作为执行例程的时间表。触发器的 cronExpression 属性中指定的 Cron
表达式用于安排该触发器的执行。
s
m h dm m dw y
其中:
| 字段 | 说明 | 必填 | 允许使用的值 | 允许使用的特殊字符 |
|---|---|---|---|---|
s |
秒 | 是 | 0-59 | , - * / |
m |
分钟 | 是 | 0-59 | , - * / |
h |
小时 | 是 | 0-23 | , - * / |
dm |
日期 | 是 | 0-31 | , - * ? / L W |
m |
月 | 是 | 1-12 或 JAN-DEC | , - * / |
dw |
周几 | 是 | 1-7 或 SUN-SAT | , - * ? / L # |
y |
年 | 否 | 空或 1970-2099 | , - * / |
特殊字符的定义如下:
| 特殊字符 | 说明 |
|---|---|
| * | 用于选择字段中的所有值。例如,分钟字段中的 * 表示 每分钟。 |
| ? | 用于在允许使用该字符的两个字段之一中指定内容, 但不能在另一个字段中指定。例如,如果您希望触发器在特定日期(例如 10 日)执行,但不关心是周几,请在日期字段中指定 10,并在周几字段中指定 ?。 |
| - | 用于指定范围。例如,小时字段中的 10-12 表示 10 点、11 点和 12 点。 |
| , | 用于指定其他值。例如,周几字段中的 MON,WED,FRI 表示周一、周三和周五。 |
| / | 用于指定增量。例如,秒字段中的 0/15 表示 0 秒、 15 秒、30 秒和 45 秒。秒字段中的 5/15 表示 5 秒、20 秒、35 秒和 50 秒。您还可以在“字符后指定 /。这样做相当于在 / 前面加上 0。 在日期字段中指定 1/3 表示从每月第一天开始每 3 天执行一次。 |
| L | 在允许使用它的两个字段中具有不同的含义。日期字段中的 L 表示当月的最后一天,即 1 月 31 日或非闰年 2 月 28 日。在周几字段中,L 表示一周的最后一天, 即 7 或 SAT。但如果在周几字段中在另一个值之后使用,则表示当月的最后一个 xxx 天。例如,6L 表示当月的最后一个周五。 |
| W | 用于指定最接近给定日期的工作日(周一至周五)。例如,如果您 在日期字段中指定 15W,则表示最接近当月 15 日的 工作日。因此,如果 15 日是周六,触发器将在 14 日(周五)执行。如果 15 日是周日,触发器将在 16 日(周一)执行。如果 15 日是周二, 则触发器将在 15 日(周二)执行。但是,如果您为日期指定 1W,并且 1 日是周六,触发器将在 3 日(周一)执行,因为它不会 “跳过”当月日期的边界。只有当日期是单日而不是日期范围或日期列表时,才能指定 W 字符。 |
| # | 用于指定当月的第 n 个 XXX 天。例如,周几字段中的值 6#3 表示当月的第三个周五(第 6 天 = 周五,#3 = 当月的第 3 个)。其他示例:2#1 = 当月的第一个周一,4#5 = 当月的第五个 周三。 |
以下是一些 Cron 表达式示例(列出的所有时间均采用世界协调时间 (UTC)):
| Cron 表达式 | 执行时间表 |
|---|---|
| 0 0 12 * * ? | 每天下午 12 点(中午)。 |
| 0 15 10 * * ? 2013 | 2013 年每天上午 10:15。 |
| 0 10,44 14 ? 3 WED | 3 月每个周三下午 2:10 和下午 2:44。 |
| 0 15 10 ? * 6L 2013-2015 | 2013 年、2014 年和 2015 年每年最后一个周五上午 10:15。 |
| 0 15 10 ? * 6#3 | 每月第三个周五上午 10:15。 |
使用 API 查看已安排的作业
您可以通过发出 GET 请求来查看所有当前已安排的作业
/triggers?orgid={org_name}。
例如:
$ curl -H "Accept:application/json" -X GET \ "http://localhost:8080/v1/mint/triggers?orgid={org_name}" \ -u email:password
以下提供了一个响应示例:
[ {
"createdDate" : 1457924378176,
"cronExpression" : "3 0 0 * * ?",
"enabled" : true,
"group" : "management-server",
"id" : "MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
"jobId" : "MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@management-server",
"name" : "MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@management-server@@@DEFAULT",
"priority" : "1",
"suiteId" : "DEFAULT",
"triggerDataMap" : {
"custom_lock_key" : "mint.scheduler.__ORG_ID__.resetdeveloperrateplancounter@@@management"
},
"updatedDate" : 1457924378176
}, {
"createdDate" : 1457924378014,
"cronExpression" : "",
"enabled" : true,
"group" : "management-server",
"id" : "MINT.ADHOC_NOTIFY@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
"jobId" : "MINT.ADHOC_NOTIFY@@@management-server",
"name" : "MINT.ADHOC_NOTIFY@@@management-server@@@DEFAULT",
"priority" : "4",
"startTime" : "1372916749000",
"suiteId" : "DEFAULT",
"triggerDataMap" : {
"custom_lock_key" : "mint.scheduler.__ORG_ID__.adhocnotify@@@management"
},
"updatedDate" : 1457924378014
}, {
"createdDate" : 1457924377877,
"cronExpression" : "0 20 1 * * ?",
"enabled" : true,
"group" : "management-server",
"id" : "MINT.CHARGE_DAILY@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
"jobId" : "MINT.CHARGE_DAILY@@@management-server",
"name" : "MINT.CHARGE_DAILY@@@management-server@@@DEFAULT",
"priority" : "1",
"suiteId" : "DEFAULT",
"triggerDataMap" : {
"custom_lock_key" : "mint.scheduler.__ORG_ID__.chargedaily@@@management"
},
"updatedDate" : 1457924377877
},
...
]
您还可以通过向
/triggers/{trig_id} 发出 GET 请求来查看特定的已安排的作业,其中 {trig_id} 是作业
触发器的标识,如已安排的作业概览中所述。例如:
$ curl -X GET \ "http://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT" \ -u email:password
以下提供了一个响应示例:
{
"createdDate" : 1457924377925,
"cronExpression" : "0 20 2 * * ?",
"enabled" : true,
"group" : "management-server",
"id" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
"jobId" : "MINT.RENEW_DEV_RATEPLAN@@@management-server",
"name" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT",
"priority" : "1",
"suiteId" : "DEFAULT",
"triggerDataMap" : {
"custom_lock_key" : "mint.scheduler.__ORG_ID__.renewydevrateplan@@@management"
},
"updatedDate" : 1457924377925
}
使用 API 更新已安排的作业
您可以通过更改预定作业的触发器的属性来更新该作业。例如,您 可能需要更改触发器的执行时间表。
对于 Cron 触发器作业(即包含 Cron 表达式值的作业),您只能
更改 cronExpression 和 enabled 属性的值。其他更改会被
忽略。对于未指定 Cron 表达式值的作业,您可以更改其他属性
,例如 startTime 或 priority。
如需更新已安排的作业,请向 /triggers/{trig_id} 发出 PUT 请求,其中
{trig_id} 是作业触发器的标识,如 已安排的作业概览中所述。进行更新时,您需要在
请求正文中指定更新后的设置和触发器的 ID。
例如,以下请求将“新开发者费率方案 续订”作业的 Cron 表达式更新为每天凌晨 5 点(世界协调时间)运行:
$ curl -H "Content-Type: application/json" -X PUT -d \
'{
"cronExpression" : "0 0 5 * * ?",
"enabled" : true,
"group" : "management-server",
"id" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
"jobId" : "MINT.RENEW_DEV_RATEPLAN@@@management-server",
"name" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT",
"priority" : "1",
"suiteId" : "DEFAULT",
"triggerDataMap" : {
"custom_lock_key" : "mint.scheduler.__ORG_ID__.renewydevrateplan@@@management"
},
}' \
https://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT
\
-u email:password
使用 API 停用和重新启用预定作业
如需停用预定作业,请将其触发器的 enabled 属性值设置为
false。例如:
$ curl -H "Content-Type: application/json" -X PUT -d \
'{
"cronExpression" : "0 0 5 * * ?",
"enabled" : false,
"group" : "management-server",
"id" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
"jobId" : "MINT.RENEW_DEV_RATEPLAN@@@management-server",
"name" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT",
"priority" : "1",
"suiteId" : "DEFAULT",
"triggerDataMap" : {
"custom_lock_key" : "mint.scheduler.__ORG_ID__.renewydevrateplan@@@management"
},
}' \
https://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT
\
-u email:password
如需重新启用已停用的作业,请将其触发器的 enabled 属性值设置为
true。
后续步骤
建议您定期将组织以及使用 Edge API 服务创建的任何 开发者、应用和产品与 Monetization 重新同步。如需了解具体方法,请参阅 将 Apigee Edge 数据与 Monetization 同步。