Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Обзор запланированных заданий
Монетизация предоставляет планировщик заданий и набор заданий, которые запланированы для выполнения в определенное время.
В таблице ниже перечислены запланированные задания, связанные с монетизацией, и время их выполнения (все значения указаны по UTC). Также указан триггер для каждого задания.
| Работа | Описание | Расписание (UTC) | Триггер |
|---|---|---|---|
| Ежемесячная ставка налога на разработчиков | Получает ставку налога из системы налогообложения для каждого разработчика и обновляет объект разработчика с учетом измененной ставки. | Первый день каждого месяца в 5:45 утра. | MINT.MONTHLY_DEV_TAXRATE@@@ |
| Продлить подписку | Применяет регулярные сборы для активных тарифных планов или новые сборы для будущих тарифных планов, которые начинаются в текущий день. | Каждый день в 00:00:05 | MINT.RENEW_SUBSCRIPTIONS@@@ |
| XeFeed Updater | Получает курс доллара США для каждой поддерживаемой валюты. | Каждый день в 00:00:01 | MINT.XEFEED@@@ |
| Как продлить тарифный план для разработчиков | Переносит даты продления тарифного плана и рассчитывает комиссии за досрочное расторжение. | Каждый день в 2:20. | MINT.RENEW_DEV_RATEPLAN@@@ |
| Повторить передачу транзакции | Примечание. Эта задача устарела и не влияет на монетизацию. | Каждый день в 4:30. | MINT.RETRY_TX_RELAY@@@ |
| Transaction Cleanser | Примечание. Эта задача устарела и не влияет на монетизацию. | Каждый день в 5:30. | MINT.TX_CLEANSER@@@ |
| Аудит баланса разработчика | Проверяет баланс аккаунта разработчика. Копирует текущее использование и баланс предоплаты/кредитный лимит постоплаты в таблицу аудита, затем вычитает текущее использование из аккаунта разработчика и возвращает баланс использования к нулю. | Первый день каждого месяца в 00:00:05 | MINT.DEVELOPER_BALANCE_AUDIT@@@ |
| Документы для аккаунтов с кредитной линией | Создает платежные документы. Примечание. Apigee больше не поддерживает создание платежных документов на основе данных монетизации Apigee Edge. Подробнее о прекращении поддержки… |
11-го числа каждого месяца в 00:01 | MINT.MONTLY_BILLING_DOCS@@@ |
| Счетчик тарифного плана разработчика | Примечание. Эта задача устарела и не влияет на монетизацию. | Каждый день в 00:00:03 | MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@ |
| Ежедневные списания | Пересчитывает все почасовые суммы транзакций и использует их для расчета суточных сумм за предыдущий день. | Каждый день в 1:20. | MINT.CHARGE_DAILY@@@ |
| Почасовая оплата | Рассчитывает общую сумму всех транзакций за каждый 15-минутный интервал. | 1 минута после каждой четверти часа | MINT.CHARGE_HOURLY@@@ |
| Как обновить конфигурацию уведомлений | Переиндексирует все условия уведомлений. | Каждые 5 минут | MINT.REFRESH_NOTIFICATION_CONFIG@@@ |
| Получать уведомления по электронной почте | Отправляет накопленные уведомления по электронной почте. | Каждый час | MINT.EMAIL_NOTIFICATION@@@ |
| Лимит обновления | Примечание. Эта задача устарела и не влияет на монетизацию. | Н/Д (никогда не выполняется) | MINT.REFRESH_LIMIT@@@ |
Помимо перечисленных выше заданий, есть и другие, которые можно включить с помощью уведомлений о событиях. Они перечислены в таблице ниже. Подробнее о том, как настроить уведомления…
| Задание | Описание | Запланировать публикацию | Триггер |
|---|---|---|---|
| Уведомление о новом пакете | Отправляет всем разработчикам уведомление о том, что доступен новый пакет API. |
Выполняется один раз – в день включения задания в 21:00.
Примечание. Уведомления отправляются только один раз, даже если вы настроите |
MINT.NEW_PACKAGE_NOTIFY@@@ |
| Новое специальное уведомление | Отправляет всем разработчикам уведомление о том, что новые продукты API доступны на определенных географических рынках. |
Выполняется один раз – в день включения задания в 21:00.
Примечание. Уведомления отправляются только один раз, даже если вы настроите |
MINT.ADHOC_NOTIFY@@@ |
| Уведомление о новом продукте | Отправляет всем разработчикам уведомление о том, что доступен новый продукт API. |
Выполняется один раз – в день включения задания в 21:00.
Примечание. Уведомления отправляются только один раз, даже если вы настроите |
MINT.NEW_PRODUCT_NOTIFY@@@ |
| Уведомление о новом тарифном плане |
Отправляет разработчикам уведомление о том, что доступен новый тарифный план. Все разработчики, подписанные на основной тарифный план, получают уведомление о том, что активирован новый тарифный план. Дополнительные замечания:
|
Запускается в 4:30 в день начала действия нового тарифного плана. | MINT.NEW_RATEPLAN_NOTIFY@@@ |
| Новые условия использования | Отправляет уведомление разработчикам, которых коснулись новые или измененные Условия использования (и которые ещё не приняли их). | За 30, 7 и 1 день до даты вступления в силу новых или измененных Условий использования в 21:00. | MINT.TNC_ACCEPTANCE_NOTIFY@@@ |
| Тариф с истекающим сроком действия | Отправляет разработчикам уведомление о том, что срок действия тарифного плана скоро истечет. | Запускается за 30, 7 и 1 день до окончания срока действия тарифного плана в 21:00. | MINT.EXPIRING_RATE_PLAN_NOTIFY@@@ |
Как управлять расписанием заданий по монетизации с помощью API
В разделах ниже описано, как управлять расписанием заданий по монетизации с помощью API:
- Настройка триггеров
- Как создавать выражения cron
- Как посмотреть запланированные задания с помощью API
- Как изменить запланированные задания с помощью API
- Как отключить и снова включить запланированное задание с помощью API
Подробную информацию об API, описанных в этом разделе, можно найти в Справочнике по API в разделе "Запланированные задания".
Настройка триггеров
Планировщик использует триггеры для выполнения заданий. Запланированное задание выполняется, когда срабатывает связанный с ним триггер. Свойства триггера определяют выполнение задания. Задавая значения этих свойств, вы можете управлять характеристиками выполнения задания, например временем и частотой его выполнения.
Два наиболее распространенных типа триггеров – триггеры cron и простые триггеры. У триггера cron есть свойство cronExpression, в котором задано расписание выполнения. У простого триггера нет свойства cronExpression. Чтобы указать, когда триггер должен вступить в силу, вы задаете свойство startTime, а при необходимости – endTime.
Ниже перечислены свойства триггеров (время указано по всемирному координированному времени).
| Свойство | Описание |
|---|---|
cronExpression |
Выражение Cron для создания расписания выполнения триггера, например "В 8:00 по понедельникам, вторникам, средам, четвергам и пятницам" или "В 1:30 в последнюю пятницу месяца". Подробнее о том, как создавать выражения cron…
Если указать это свойство, триггер будет считаться триггером cron. Примечание. Если указаны и |
enabled |
Флаг, указывающий, включен ли триггер для выполнения. Возможные значения:
|
endTime |
Время в формате Epoch, когда расписание триггера перестает действовать. |
group |
Тип сервера, на котором будет выполняться триггер. Например, если триггер должен выполняться на сервере управления, укажите значение management-server. Если триггер должен выполняться на сервере обработки сообщений, задайте значение message-processor. |
id |
Идентификатор триггера. |
jobId |
Идентификатор задания, которое нужно выполнить. |
name |
Уникальное название, используемое для идентификации триггера. |
priority |
Относительный приоритет выполнения триггеров, если несколько триггеров запланированы на одно и то же время. Чем ниже значение, тем выше приоритет. Например, если два триггера должны сработать одновременно, но у одного приоритет 1, а у другого – 2, то сначала сработает триггер с приоритетом 1.
Это свойство применяется, только если у нескольких триггеров одинаковое время выполнения. |
startTime |
Применяется только к простым триггерам.
Время в формате эпохи, когда расписание триггера вступает в силу. Примечание. Если указаны и |
suiteId |
Флаг, указывающий, относится ли уведомление к системному или стандартному набору уведомлений. Допустимые значения: DEFAULT, SYSTEM или уникальное название набора. |
triggerDataMap |
Ключ блокировки custom_lock_key, который не позволяет нескольким серверам выполнять одно и то же задание одновременно. |
Как создавать выражения cron
Выражение cron – это строка, состоящая из шести или семи полей, разделенных пробелами. Выражение представляет собой набор временных значений, обычно в виде расписания для выполнения процедуры. Выражения Cron, указанные в свойстве cronExpression триггера, используются для планирования выполнения этого триггера.
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. Вы также можете указать / после символа ". Это равносильно тому, что перед символом "/" стоит ноль. Если в поле "День месяца" указано "1/3", это означает, что задача будет выполняться каждые три дня, начиная с первого дня месяца. |
| L | Имеет разное значение в каждом из двух полей, в которых разрешен. Символ L в поле дня месяца означает последний день месяца, то есть 31 января или 28 февраля в невисокосном году. В поле "День недели" значение L означает последний день недели, то есть 7 или СБ. Если же оно используется в этом поле после другого значения, то означает последний xxx день месяца. Например, 6L означает последнюю пятницу месяца. |
| Вт | Используется, чтобы указать ближайший будний день (понедельник – пятница) к заданному дню. Например, если в поле "День месяца" указать 15W, это будет означать ближайший будний день к 15-му числу месяца. Если 15-е число приходится на субботу, триггер сработает в пятницу, 14-го. Если 15-е число приходится на воскресенье, триггер сработает в понедельник, 16-го. Если 15-е число приходится на вторник, то платеж будет выполнен во вторник 15-го числа. Однако если вы укажете 1W для дня месяца, а первое число будет субботой, триггер сработает в понедельник, 3-го числа, поскольку он не будет "перескакивать" через границу дней месяца. Символ W можно указать, только если день месяца – один, а не диапазон или список дней. |
| # | Используется для указания N-го дня месяца. Например, значение 6#3 в поле "День недели" означает третью пятницу месяца (день 6 = пятница, а #3 = третья в месяце). Другие примеры: 2#1 – первый понедельник месяца, 4#5 – пятая среда месяца. |
Вот несколько примеров выражений cron (все указанное время – UTC):
| Выражение cron | Расписание выполнения |
|---|---|
| 0 0 12 * * ? | Каждый день в 12:00. |
| 0 15 10 * * ? 2013 | 10:15 каждый день в 2013 году. |
| 0 10,44 14 ? 3 СР | в 14:10 и 14:44 каждую среду марта. |
| 0 15 10 ? * 6L 2013–2015 гг. | 10:15 в последнюю пятницу каждого месяца в 2013, 2014 и 2015 годах. |
| 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
},
...
]
Вы также можете посмотреть определенное запланированное задание, отправив GET-запрос на адрес /triggers/{trig_id}, где {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.
Чтобы обновить запланированное задание, отправьте запрос PUT к /triggers/{trig_id}, где {trig_id} – идентификатор триггера задания, как описано в обзоре запланированных заданий. При обновлении в теле запроса необходимо указать измененные настройки и идентификатор триггера.
Например, следующий запрос обновляет CRON-выражение для задания New Developer Rate Plan Renewal, чтобы оно выполнялось каждый день в 5:00 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. Подробнее о том, как синхронизировать данные Apigee Edge с монетизацией…