収益化ジョブのスケジュールを設定する

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。
情報

スケジュールされたジョブの概要

Monetization には、ジョブ スケジューラと所定の時間に実行されるジョブが用意されています。

次の表に、収益化によって提供される事前スケジュール設定されたジョブと、実行がスケジュール設定されている時間を示します(記載されている時間はすべて UTC です)。各ジョブのトリガーも一覧表示されます。

ジョブ 説明 スケジュール(UTC) トリガー
デベロッパーの月額税率 デベロッパーごとに税エンジンから税率を取得し、改訂された税率でデベロッパー エンティティを更新します。 毎月 1 日の午前 5 時 45 分 MINT.MONTHLY_DEV_TAXRATE@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
サブスクリプションを更新する 有効な料金プランの定期的な料金、または当日開始の将来の料金プランの新しい料金を適用します。 毎日午前 0 時 5 秒 MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
XeFeed アップデータ サポートされている各通貨の米ドルでの為替レートを取得します。 毎日午前 0 時 1 秒 MINT.XEFEED@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
デベロッパー料金プランを更新する レートプランの更新日をロールオーバーし、早期解約料を計算します。 毎日午前 2 時 20 分 MINT.RENEW_DEV_RATEPLAN@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Retry 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
デベロッパー残高の監査 デベロッパー アカウントの残高を監査します。現在の使用量と前払い残高/後払い利用限度額を監査テーブルにコピーし、現在の使用量をデベロッパー アカウントから差し引いて、使用量残高をゼロに戻します。 毎月 1 日の午前 0 時 5 秒 MINT.DEVELOPER_BALANCE_AUDIT@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
月単位の請求書 請求関連ドキュメントを生成します。

注: Apigee では、Apigee Edge Monetization の請求関連ドキュメントの生成のサポートを終了しました。廃止をご覧ください。

毎月 11 日の午前 0 時 1 分 MINT.MONTLY_BILLING_DOCS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
デベロッパー料金プラン カウンタ : このジョブは非推奨となっており、収益化には影響しません。 毎日午前 0 時 3 秒 MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
1 日あたりの料金 1 時間ごとのトランザクションの合計をすべて再計算し、それを使用して前日の 1 日あたりの合計を計算します。 毎日午前 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
メール通知を送信する 蓄積されたメール通知を送信します 1 時間ごと MINT.EMAIL_NOTIFICATION@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
更新上限 : このジョブは非推奨となっており、収益化には影響しません。 該当なし(実行されない) MINT.REFRESH_LIMIT@@@
message-processor@@@SYSTEM@@@
message-processor@@@SYSTEM

上記のジョブに加えて、次の表に示すように、イベント通知を介して有効にできるジョブもあります。詳しくは、通知を設定するをご覧ください。

ジョブ 説明 スケジュール トリガー
New Package Notification 新しい API パッケージが利用可能になったことをすべてのデベロッパーに通知します。 ジョブが有効になった日の午後 9 時に 1 回実行されます。

: ジョブが複数回実行される cronExpression を構成した場合でも、通知は 1 回のみ送信されます。

MINT.NEW_PACKAGE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新しいアドホック通知 特定の地域市場で新しい API プロダクトが利用可能になったことをすべてのデベロッパーに通知します。 ジョブが有効になった日の午後 9 時に 1 回実行されます。

: ジョブが複数回実行される cronExpression を構成した場合でも、通知は 1 回のみ送信されます。

MINT.ADHOC_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新製品に関する通知 新しい API プロダクトが利用可能になったことをすべてのデベロッパーに通知します。 ジョブが有効になった日の午後 9 時に 1 回実行されます。

: ジョブが複数回実行される cronExpression を構成した場合でも、通知は 1 回のみ送信されます。

MINT.NEW_PRODUCT_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新しい料金プランの通知

新しいレートプランが利用可能になったことを、影響を受けるデベロッパーに通知します。親料金プランに登録しているすべてのデベロッパーに、新しい料金プランが有効になったことが通知されます。

次の特長があります。

  • 料金プランが標準プランの場合、すべてのデベロッパーに通知が届きます。
  • デベロッパー カテゴリの料金プランの場合は、そのカテゴリのデベロッパーのみに通知されます。
  • デベロッパーの料金プランの場合は、その特定のデベロッパーにのみ通知されます。
新しい料金プランの開始日の午前 4 時 30 分に実行されます。 MINT.NEW_RATEPLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
New Tnc 新しい利用規約または改訂された利用規約が公開されたこと(およびデベロッパーがまだ同意していないこと)を、影響を受けるデベロッパーに通知します。 新しい利用規約または改訂された利用規約の開始日の 30 日前、7 日前、1 日前の午後 9 時に実行されます。 MINT.TNC_ACCEPTANCE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
料金プランの有効期限が切れる 影響を受けるデベロッパーに通知を送信し、レートプランの有効期限が切れることを事前に警告します。 料金プランの有効期限の 30 日前、7 日前、1 日前の午後 9 時に実行されます。 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 時」や「毎月最終金曜日の午前 1 時 30 分」など)。詳しくは、cron 式の作成をご覧ください。

このプロパティを指定すると、トリガーが cron トリガーとして定義されます。

: cronExpressionstartTime/endTime の両方が指定されている場合、cronExpression が優先されます。

enabled トリガーが実行可能かどうかを示すフラグ。値は次のいずれかになります。
  • true。トリガーが実行可能になっています。
  • false。トリガーが無効になっているため、実行されません。
endTime トリガーのスケジュールが有効でなくなるエポック形式の時間。
group トリガーが実行されるサーバーのタイプ。たとえば、トリガーが管理サーバーで実行される場合、値は management-server に設定する必要があります。トリガーがメッセージ処理サーバーで実行される場合は、値を message-processor に設定する必要があります。
id トリガーの識別。
jobId 実行するジョブの識別。
name トリガーの識別に使用される一意の名前。
priority 複数のトリガーが同時に実行されるようにスケジュールされている場合、トリガーの相対実行優先度。値が小さいほど優先度が高くなります。たとえば、2 つのトリガーが同時に実行されるようにスケジュールされていて、一方のトリガーの優先度が 1 で、もう一方のトリガーの優先度が 2 の場合、優先度 1 のトリガーが最初に実行されます。

このプロパティは、複数のトリガーの実行時間がまったく同じ場合にのみ適用されます。

startTime シンプルなトリガーにのみ適用されます。

トリガーのスケジュールが有効になるエポック形式の時刻。

: cronExpressionstartTime/endTime の両方が指定されている場合は、cronExpression が優先されます。

suiteId システムレベルまたはデフォルト レベルの通知スイートの通知部分であるかどうかを指定するフラグ。有効な値は DEFAULT または SYSTEM です。独自のユニークなスイート名を指定することもできます。
triggerDataMap 複数のサーバーが同じジョブを同時に実行しないようにするロックキー custom_lock_key

cron 式の作成

cron 式は、空白文字で区切られた 6 ~ 7 個のフィールドで構成される文字列です。この式は、通常はルーティンを実行するスケジュールとして、一連の時刻を表します。トリガーの 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 , - * /

特殊文字は次のように定義されます。

特殊文字 説明
* フィールド内のすべての値を選択するために使用されます。たとえば、分フィールドの * は毎分を意味します。
? 文字が許可されている 2 つのフィールドのうち、一方のフィールドで何かを指定するために使用されます。たとえば、トリガーを月の特定の日(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 許可されている 2 つのフィールドでは、それぞれ意味が異なります。月の日のフィールドの L は、月の最終日を意味します。つまり、1 月の場合は 31 日、うるう年以外の 2 月の場合は 28 日です。曜日のフィールドで L は、週の最終日(7 または SAT)を意味します。ただし、曜日のフィールドで別の値の後に使用すると、月の最終 xxx 日を意味します。たとえば、6L は月の最終金曜日を意味します。
W 指定された日に最も近い平日(月曜日から金曜日)を指定するために使用されます。たとえば、日のフィールドに 15W と指定すると、その月の 15 日に最も近い平日を意味します。たとえば、15 日が土曜日の場合、トリガーは 14 日の金曜日に実行されます。15 日が日曜日の場合、トリガーは 16 日の月曜日に実行されます。15 日が火曜日の場合は、15 日の火曜日に実行されます。ただし、日付に 1W を指定し、1 日が土曜日の場合、トリガーは 3 日の月曜日に実行されます。これは、月の境界を越えて「ジャンプ」しないためです。W 文字は、月の日が 1 日の場合にのみ指定できます。範囲や日のリストでは指定できません。
# 月の n 番目の XXX 日を指定するために使用されます。たとえば、曜日のフィールドの値が 6#3 の場合、月の第 3 金曜日(6 = 金曜日、#3 = 月の第 3 金曜日)を意味します。その他の例: 2#1 = 月の最初の月曜日、4#5 = 月の 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 毎月第 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} はジョブトリガーの 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 です(スケジュール設定されたジョブの概要を参照)。更新を行う場合は、リクエストの本文で、更新された設定とトリガーの ID を指定する必要があります。

たとえば、次のリクエストは、New Developer Rate Plan Renewal ジョブの cron 式を更新して、毎日午前 5 時(UTC)に実行するようにします。

$ 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 Services を使用して作成したデベロッパー、アプリケーション、プロダクトを収益化と定期的に再同期することをおすすめします。詳しくは、Apigee Edge データを収益化と同期させるをご覧ください。