Как запланировать задания по монетизации

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Обзор запланированных заданий

Монетизация предоставляет планировщик заданий и набор заданий, которые запланированы для выполнения в определенное время.

В таблице ниже перечислены запланированные задания, связанные с монетизацией, и время их выполнения (все значения указаны по UTC). Также указан триггер для каждого задания.

Работа Описание Расписание (UTC) Триггер
Ежемесячная ставка налога на разработчиков Получает ставку налога из системы налогообложения для каждого разработчика и обновляет объект разработчика с учетом измененной ставки. Первый день каждого месяца в 5:45 утра. MINT.MONTHLY_DEV_TAXRATE@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Продлить подписку Применяет регулярные сборы для активных тарифных планов или новые сборы для будущих тарифных планов, которые начинаются в текущий день. Каждый день в 00:00:05 MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
XeFeed Updater Получает курс доллара США для каждой поддерживаемой валюты. Каждый день в 00:00:01 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
Transaction Cleanser Примечание. Эта задача устарела и не влияет на монетизацию. Каждый день в 5:30. MINT.TX_CLEANSER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Аудит баланса разработчика Проверяет баланс аккаунта разработчика. Копирует текущее использование и баланс предоплаты/кредитный лимит постоплаты в таблицу аудита, затем вычитает текущее использование из аккаунта разработчика и возвращает баланс использования к нулю. Первый день каждого месяца в 00:00:05 MINT.DEVELOPER_BALANCE_AUDIT@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Документы для аккаунтов с кредитной линией Создает платежные документы.

Примечание. Apigee больше не поддерживает создание платежных документов на основе данных монетизации Apigee Edge. Подробнее о прекращении поддержки…

11-го числа каждого месяца в 00:01 MINT.MONTLY_BILLING_DOCS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Счетчик тарифного плана разработчика Примечание. Эта задача устарела и не влияет на монетизацию. Каждый день в 00:00:03 MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Ежедневные списания Пересчитывает все почасовые суммы транзакций и использует их для расчета суточных сумм за предыдущий день. Каждый день в 1:20. MINT.CHARGE_DAILY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Почасовая оплата Рассчитывает общую сумму всех транзакций за каждый 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
Лимит обновления Примечание. Эта задача устарела и не влияет на монетизацию. Н/Д (никогда не выполняется) MINT.REFRESH_LIMIT@@@
message-processor@@@SYSTEM@@@
message-processor@@@SYSTEM

Помимо перечисленных выше заданий, есть и другие, которые можно включить с помощью уведомлений о событиях. Они перечислены в таблице ниже. Подробнее о том, как настроить уведомления…

Задание Описание Запланировать публикацию Триггер
Уведомление о новом пакете Отправляет всем разработчикам уведомление о том, что доступен новый пакет API. Выполняется один раз – в день включения задания в 21:00.

Примечание. Уведомления отправляются только один раз, даже если вы настроите cronExpression так, что задание будет выполняться несколько раз.

MINT.NEW_PACKAGE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Новое специальное уведомление Отправляет всем разработчикам уведомление о том, что новые продукты API доступны на определенных географических рынках. Выполняется один раз – в день включения задания в 21:00.

Примечание. Уведомления отправляются только один раз, даже если вы настроите cronExpression так, что задание будет выполняться несколько раз.

MINT.ADHOC_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Уведомление о новом продукте Отправляет всем разработчикам уведомление о том, что доступен новый продукт API. Выполняется один раз – в день включения задания в 21: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 день до даты вступления в силу новых или измененных Условий использования в 21:00. MINT.TNC_ACCEPTANCE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Тариф с истекающим сроком действия Отправляет разработчикам уведомление о том, что срок действия тарифного плана скоро истечет. Запускается за 30, 7 и 1 день до окончания срока действия тарифного плана в 21:00. MINT.EXPIRING_RATE_PLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT

Как управлять расписанием заданий по монетизации с помощью API

В разделах ниже описано, как управлять расписанием заданий по монетизации с помощью API:

Подробную информацию об API, описанных в этом разделе, можно найти в Справочнике по API в разделе "Запланированные задания".

Настройка триггеров

Планировщик использует триггеры для выполнения заданий. Запланированное задание выполняется, когда срабатывает связанный с ним триггер. Свойства триггера определяют выполнение задания. Задавая значения этих свойств, вы можете управлять характеристиками выполнения задания, например временем и частотой его выполнения.

Два наиболее распространенных типа триггеров – триггеры cron и простые триггеры. У триггера cron есть свойство cronExpression, в котором задано расписание выполнения. У простого триггера нет свойства cronExpression. Чтобы указать, когда триггер должен вступить в силу, вы задаете свойство startTime, а при необходимости – endTime.

Ниже перечислены свойства триггеров (время указано по всемирному координированному времени).

Свойство Описание
cronExpression Выражение Cron для создания расписания выполнения триггера, например "В 8:00 по понедельникам, вторникам, средам, четвергам и пятницам" или "В 1:30 в последнюю пятницу месяца". Подробнее о том, как создавать выражения cron…

Если указать это свойство, триггер будет считаться триггером cron.

Примечание. Если указаны и cronExpression, и startTime/endTime, приоритет будет у cronExpression.

enabled Флаг, указывающий, включен ли триггер для выполнения. Возможные значения:
  • true. Триггер включен для выполнения.
  • false. Триггер отключен и не будет выполняться.
endTime Время в формате Epoch, когда расписание триггера перестает действовать.
group Тип сервера, на котором будет выполняться триггер. Например, если триггер должен выполняться на сервере управления, укажите значение management-server. Если триггер должен выполняться на сервере обработки сообщений, задайте значение message-processor.
id Идентификатор триггера.
jobId Идентификатор задания, которое нужно выполнить.
name Уникальное название, используемое для идентификации триггера.
priority Относительный приоритет выполнения триггеров, если несколько триггеров запланированы на одно и то же время. Чем ниже значение, тем выше приоритет. Например, если два триггера должны сработать одновременно, но у одного приоритет 1, а у другого – 2, то сначала сработает триггер с приоритетом 1.

Это свойство применяется, только если у нескольких триггеров одинаковое время выполнения.

startTime Применяется только к простым триггерам.

Время в формате эпохи, когда расписание триггера вступает в силу.

Примечание. Если указаны и cronExpression, и startTime/endTime, приоритет будет у cronExpression.

suiteId Флаг, указывающий, относится ли уведомление к системному или стандартному набору уведомлений. Допустимые значения: DEFAULT, SYSTEM или уникальное название набора.
triggerDataMap Ключ блокировки custom_lock_key, который не позволяет нескольким серверам выполнять одно и то же задание одновременно.

Как создавать выражения cron

Выражение cron – это строка, состоящая из шести или семи полей, разделенных пробелами. Выражение представляет собой набор временных значений, обычно в виде расписания для выполнения процедуры. Выражения Cron, указанные в свойстве cronExpression триггера, используются для планирования выполнения этого триггера.

Выражение 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. Вы также можете указать / после символа ". Это равносильно тому, что перед символом "/" стоит ноль. Если в поле "День месяца" указано "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 с монетизацией…