安排创收作业

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

预定作业概览

创收功能提供作业调度器和一组预先安排在指定时间运行的作业。

下表列出了创收功能提供的预先安排的作业以及安排这些作业的运行时间(列出的所有时间均采用世界协调时间 (UTC))。此外,列表中还列出了每个作业的触发器。

作业 说明 时间表(世界协调时间) 触发器
每月开发者税率 从税务引擎提取每个开发者的税率,并使用修改后的税率更新开发者实体。 每月第一天早上 5:45 MINT.MONTHLY_DEV_TAXRATE@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
续订 对有效费率方案应用周期性费用,或针对从当天开始的未来费率方案应用新费用。 每天午夜 5 秒后 MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
XeFeed 更新程序 获取各受支持货币的美元汇率。 每天午夜后 1 秒 MINT.XEFEED@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
续订开发者费率方案 可滚动费率方案的续订日期,并计算提前终止费用。 每天凌晨 2:20 MINT.RENEW_DEV_RATEPLAN@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
重试 Transaction Relay 注意:此作业已弃用,对创收没有任何影响。 每天凌晨 4:30 MINT.RETRY_TX_RELAY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
交易清理器 注意:此作业已弃用,对创收没有任何影响。 每天早上 5:30 MINT.TX_CLEANSER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
开发者余额审核 审核开发者帐号余额。将当前用量和预付款余额/后付费信用额度复制到审核表,然后从开发者帐号中扣除当前用量,并将用量余额归零。 每月第一天午夜 5 秒后 MINT.DEVELOPER_BALANCE_AUDIT@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
月度结算文档 生成结算凭证。

注意:Apigee 不再支持通过 Apigee Edge Monetization 生成结算文档。 请参阅弃用

每月 11 号午夜后 1 分钟 MINT.MONTLY_BILLING_DOCS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
开发者费率方案计数器 注意:此作业已弃用,对创收没有任何影响。 每天午夜 3 秒后 MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每日费用 重新计算所有每小时交易总计,并使用它们计算前一天的每日总计。 每天凌晨 1:20 MINT.CHARGE_DAILY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每小时费用 计算每季度一小时的所有交易总计。 每四分之一小时后 1 分钟 MINT.CHARGE_HOURLY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
刷新通知配置 将所有通知条件重新编入索引。 每隔 5 分钟 MINT.REFRESH_NOTIFICATION_CONFIG@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
发送电子邮件通知 累计发送电子邮件通知 每小时 MINT.EMAIL_NOTIFICATION@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
刷新限制 注意:此作业已弃用,对创收没有任何影响。 不适用(永不执行) MINT.REFRESH_LIMIT@@@
message-processor@@@SYSTEM@@@
message-processor@@@SYSTEM

除了上面列出的作业之外,您还可以通过事件通知启用一些作业,如下表所示。如需了解详情,请参阅设置通知

作业 说明 安排时间 触发器
新包裹通知 向所有开发者发送通知,告知他们有新的 API 软件包可用。 运行一次 - 作业启用当天晚上 9:00。

注意:无论您是否配置导致作业多次执行的 cronExpression,系统都只会发送通知。

MINT.NEW_PACKAGE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新临时通知 向所有开发者发送通知,告知他们新的 API 产品已在特定地区市场推出。 运行一次 - 作业启用当天晚上 9:00。

注意:无论您是否配置导致作业多次执行的 cronExpression,系统都只会发送通知。

MINT.ADHOC_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新产品通知 向所有开发者发送通知,告知他们有新的 API 产品可供使用。 运行一次 - 作业启用当天晚上 9:00。

注意:无论您是否配置导致作业多次执行的 cronExpression,系统都只会发送通知。

MINT.NEW_PRODUCT_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新费率方案通知

向受影响的开发者发送通知,告知他们有新的费率方案可供使用。所有已订阅父级费率方案的开发者都会收到关于新费率方案生效的通知。

此外:

  • 如果费率方案是标准方案,所有开发者都会收到通知。
  • 如果是开发者类别的费率方案,则只有属于该类别的开发者才会收到通知。
  • 如果是开发者费率方案,则只有该特定开发者会收到通知。
在新费率方案的开始日期凌晨 4:30 运行。 MINT.NEW_RATEPLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新 TNC 向受影响的开发者发送通知,告知他们新的或修订后的条款及条件已发布(但开发者尚未接受这些条款及条件)。 在新条款或修改后的条款及条件开始日期的 30、7 和 1 天前,分别于晚上 9 点和 30 点运行。 MINT.TNC_ACCEPTANCE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
即将到期的费率方案 向受影响的开发者发送通知,提前警告费率方案即将过期。 分别在费率方案到期前 30 天、7 天和 1 天晚上 9:00 运行。 MINT.EXPIRING_RATE_PLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT

使用 API 管理创收作业时间表

以下部分介绍了如何使用 API 管理创收作业时间表:

如需详细了解本部分介绍的 API,请参阅 API 参考文档中的预定作业

配置触发器

调度器依赖触发器来执行作业。已安排的作业会在与其关联的触发器执行时执行。触发器的属性用于配置作业执行,并且您可以通过设置这些属性的值来控制作业执行的特征,例如作业的执行时间和频率。

两种最常见的触发器类型是 Cron 触发器简单触发器。Cron 触发器具有用于指定执行时间表的 cronExpression 属性。简单触发器没有 cronExpression 属性;您可以指定 startTime 来指示触发器生效的时间,还可以选择指定 endTime

触发器属性如下所示(列出的所有时间均采用世界协调时间 (UTC)):

媒体资源 说明
cronExpression 用于为触发器创建执行时间表的 Cron 表达式,例如:“周一至周五上午 8:00”或“每月最后一个星期五凌晨 1:30”。如需了解详情,请参阅构建 Cron 表达式

指定此属性可将触发器定义为 Cron 触发器。

注意:如果同时指定了 cronExpressionstartTime/endTime,则以 cronExpression 为准。

enabled 指示触发器是否已启用执行的标志。值可以是以下值之一:
  • true:触发器已启用,可以执行。
  • false。触发器已停用,不会执行。
endTime 触发器的时间安排失效的时间(采用新纪元格式的时间)。
group 将执行触发器的服务器类型。例如,如果触发器应在管理服务器中执行,则其值应设置为 management-server。如果触发器应在消息处理服务器中执行,则其值应设置为 message-processor
id 触发器的标识。
jobId 要执行的作业的标识。
name 用于标识触发器的唯一名称。
priority 触发器的相对执行优先级(如果多个触发器被安排在同一时间执行)。值越小,优先级越高。例如,如果两个触发器被安排同时执行,并且一个触发器的优先级为 1,另一个触发器的优先级为 2,则优先级为 1 的触发器首先执行。

仅当多个触发器的执行时间完全相同时,此属性才适用。

startTime 仅适用于简单触发器。

触发器的时间表生效的时间(采用新纪元格式)。

注意:如果同时指定了 cronExpressionstartTime/endTime,则以 cronExpression 为准。

suiteId 一个标志,用于指定是系统级通知还是默认级通知套件的通知部分。有效值为 DEFAULTSYSTEM,您也可以指定自己的唯一套件名称。
triggerDataMap 锁定键 custom_lock_key,用于防止多个服务器同时执行同一作业。

构建 Cron 表达式

Cron 表达式是一个由六到七个字段的字符串,由空格分隔。该表达式表示一组时间,通常作为执行例程的时间表。在触发器的 cronExpression 属性中指定的 Cron 表达式用于安排该触发器的执行。

Cron 表达式采用以下格式:s m h dm m dw y

其中:

字段 说明 必需 允许使用的值 允许使用的特殊字符
s 0-59 , - * /
m 分钟 0-59 , - * /
h 小时 0-23 , - * /
dm 日期 0-31 , - * ? / 宽
m 1-12 或 1 月 - 12 月 , - * /
dw 周几 1-7 或 SUN-SAT , - * ? / 最低
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 表示当月的最后一个星期五。
西 用于指定最接近给定日期的工作日(星期一至星期五)。例如,如果您在日期字段中指定 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 日(周三) 3 月每周三下午 2:10 和 2:44。
0 15 10?* 6L 2013-2015 2013 年、2014 年和 2015 年每月最后一个星期五的上午 10:15。
0 15 10?* 6#3 每月第三个星期五上午 10:15。

使用 API 查看预定作业

您可以通过向 /triggers?orgid={org_name} 发出 GET 请求来查看所有当前已安排的作业。

例如:

$ 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 和已启用属性的值。其他更改会被忽略。对于未指定 Cron 表达式值的作业,您可以更改 startTimepriority 等其他属性。

如需更新预定作业,请向 /triggers/{trig_id} 发出 PUT 请求,其中 {trig_id} 是作业触发器的标识,如预定作业概览中所述。进行更新时,您需要在请求正文中指定更新后的设置和触发器的 ID。

例如,以下请求会将新开发者费率方案续订作业的 Cron 表达式更新为在世界协调时间 (UTC) 每天凌晨 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 服务创建的任何开发者、应用和产品与创收功能重新同步。如需了解如何操作,请参阅将 Apigee Edge 数据与创收功能同步