安排创收作业

您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
info

已安排的作业概览

Monetization 提供了一个作业调度器和一组预先安排在 指定时间运行的作业。

下表列出了 Monetization 提供的预先安排的作业以及安排的运行时间(列出的所有时间均采用世界协调时间 (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
重试交易中继 注意:此作业已废弃,对 Monetization 没有影响。 每天凌晨 4:30 MINT.RETRY_TX_RELAY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
交易清理器 注意:此作业已废弃,对 Monetization 没有影响。 每天凌晨 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
开发者费率方案计数器 注意:此作业已废弃,对 Monetization 没有影响。 每天午夜过后 3 秒 MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每日费用 重新计算所有每小时交易总额,并使用这些总额计算 前一天的每日总额。 每天凌晨 1:20 MINT.CHARGE_DAILY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每小时费用 计算每 15 分钟的所有交易总额。 每 15 分钟过后 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
刷新限额 注意:此作业已废弃,对 Monetization 没有影响。 不适用(从不执行) 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
新条款及条件 向受影响的开发者发送通知,告知他们新的或修订后的条款及条件 已发布(且开发者尚未接受)。 在新条款及条件的开始日期前 30 天、7 天和 1 天 晚上 9:00 运行。 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 管理 Monetization 作业时间表

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

如需详细了解本部分中介绍的 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 , - * ? / 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 表达式值的作业,您可以更改其他属性 ,例如 startTimepriority

如需更新已安排的作业,请向 /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 同步