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

現在、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
トランザクション リレーの再試行 : このジョブは非推奨になっており、収益化には影響しません。 毎日午前 4 時 30 分 MINT.RETRY_TX_RELAY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
トランザクション クレンザー : このジョブは非推奨になっており、収益化には影響しません。 毎日午前 5 時 30 分 MINT.TX_CLEANSER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
デベロッパー残高監査 デベロッパー アカウントの残高を監査する現在の使用量と前払い残高/後払い利用限度額を監査テーブルにコピーし、デベロッパー アカウントから現在の使用量を差し引いて、使用量残高を 0 に戻します。 毎月 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
1 時間あたりの料金 1 四半期ごとにすべてのトランザクションの合計を計算します。 毎時 1 分 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

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

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

: cronExpression を構成してジョブが複数回実行されるかどうかにかかわらず、通知は 1 回だけ送信されます。

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

: cronExpression を構成してジョブが複数回実行されるかどうかにかかわらず、通知は 1 回だけ送信されます。

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

: cronExpression を構成してジョブが複数回実行されるかどうかにかかわらず、通知は 1 回だけ送信されます。

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 時、 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 トリガーと単純なトリガーの 2 つです。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 、- * ?/ 左西
m 1 ~ 12 日または 1 月~ 12 月 , - * /
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 は毎月第 1 月曜日、4#5 は第 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 毎月第 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} はジョブトリガーの 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 です。更新を行うときは、更新された設定とトリガーの ID をリクエスト本文で指定する必要があります。

たとえば、次のリクエストでは、毎日午前 5 時(UTC)に実行される新しいデベロッパー料金プランの更新ジョブの cron 式を更新します。

$ 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 データを収益化と同期させるをご覧ください。