Programar jobs de monetização

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Visão geral dos jobs programados

A monetização oferece um programador de jobs e um conjunto de jobs pré-programados para serem executados em horários designados.

A tabela abaixo lista os jobs pré-programados fornecidos pela monetização e os horários em que eles são executados (todos os horários listados estão em UTC). O gatilho de cada job também é listado.

Job Descrição Programação (UTC) Gatilho
Taxa mensal de tributo de desenvolvimento Busca a alíquota do mecanismo de tributos para cada desenvolvedor e atualiza a entidade do desenvolvedor com a alíquota revisada. Primeiro dia de cada mês às 5h45 MINT.MONTHLY_DEV_TAXRATE@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Renovar a assinatura Aplica taxas recorrentes para planos de tarifação ativos ou novas taxas para planos de tarifação futuros que começam no dia atual. Todos os dias às 0h05 MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
XeFeed Updater Obtém a taxa de câmbio em dólares americanos para cada moeda aceita. Todos os dias à 0h00 e 1 segundo MINT.XEFEED@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Renovar o plano de taxas do desenvolvedor Transfere datas de renovação para um plano de tarifas e calcula taxas de rescisão antecipada. Todos os dias às 2h20 MINT.RENEW_DEV_RATEPLAN@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Tentar de novo o retransmissão de transação Observação: essa função foi descontinuada e não afeta a monetização. Todos os dias às 4h30 MINT.RETRY_TX_RELAY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Limpador de transações Observação: essa função foi descontinuada e não afeta a monetização. Todos os dias às 5h30. MINT.TX_CLEANSER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Auditoria de saldo do desenvolvedor Audita o saldo da conta de desenvolvedor. Copia o uso atual e o saldo pré-pago/limite de crédito pós-pago para uma tabela de auditoria, deduz o uso atual da conta de desenvolvedor e retorna o saldo de uso a zero. Primeiro dia de cada mês, às 0h05 MINT.DEVELOPER_BALANCE_AUDIT@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Documentos de faturamento mensal Gera documentos de faturamento.

Observação:a Apigee não oferece mais suporte à geração de documentos de faturamento da monetização do Apigee Edge. Consulte Desativações.

No 11º dia de cada mês, às 0h01 MINT.MONTLY_BILLING_DOCS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Contador de plano de taxas do desenvolvedor Observação: essa função foi descontinuada e não afeta a monetização. Todos os dias às 0h03 MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Cobranças diárias Recalcula todos os totais de transações por hora e os usa para calcular os totais diários do dia anterior. Todos os dias à 1h20 MINT.CHARGE_DAILY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Taxas por hora Calcula todos os totais de transações para cada período de 15 minutos. 1 minuto após cada quarto de hora MINT.CHARGE_HOURLY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Atualizar configuração de notificação Reindexa todas as condições de notificação. A cada 5 minutos MINT.REFRESH_NOTIFICATION_CONFIG@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
Enviar notificações por e-mail Envia notificações por e-mail acumuladas A cada hora MINT.EMAIL_NOTIFICATION@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
Limite de atualização Observação: essa função foi descontinuada e não afeta a monetização. N/A (nunca é executado) MINT.REFRESH_LIMIT@@@
message-processor@@@SYSTEM@@@
message-processor@@@SYSTEM

Além dos jobs listados acima, há outros que podem ser ativados por notificações de eventos, conforme mostrado na tabela a seguir. Para mais informações, consulte Configurar notificações.

Job Descrição Programação Gatilho
Notificação de novo pacote Envia uma notificação a todos os desenvolvedores informando que um novo pacote de API está disponível. É executado uma vez no dia em que o job é ativado às 21h.

Observação: as notificações são enviadas apenas uma vez, mesmo que você configure um cronExpression que resulte na execução do job várias vezes.

MINT.NEW_PACKAGE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Nova notificação ad hoc Envia uma notificação a todos os desenvolvedores informando que novos produtos de API estão disponíveis em mercados geográficos específicos. É executado uma vez no dia em que o job é ativado às 21h.

Observação: as notificações são enviadas apenas uma vez, mesmo que você configure um cronExpression que resulte na execução do job várias vezes.

MINT.ADHOC_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Notificação de novo produto Envia uma notificação a todos os desenvolvedores informando que um novo produto de API está disponível. É executado uma vez no dia em que o job é ativado às 21h.

Observação: as notificações são enviadas apenas uma vez, mesmo que você configure um cronExpression que resulte na execução do job várias vezes.

MINT.NEW_PRODUCT_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Notificação de novo plano de tarifas

Envia uma notificação aos desenvolvedores afetados informando que um novo plano de tarifas está disponível. Todos os desenvolvedores inscritos no plano de taxas principal recebem uma notificação informando que um novo plano de taxas está ativo.

Além disso:

  • Se o plano de taxas for padrão, todos os desenvolvedores vão receber uma notificação.
  • Se for um plano de taxas da categoria do desenvolvedor, apenas os desenvolvedores dessa categoria vão receber notificações.
  • Se for um plano de taxas para desenvolvedores, apenas esse desenvolvedor específico vai receber a notificação.
Executado na data de início do novo plano de tarifas, às 4h30. MINT.NEW_RATEPLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
New Tnc Envia uma notificação aos desenvolvedores afetados informando que os Termos e Condições novos ou revisados foram publicados (e ainda não foram aceitos pelo desenvolvedor). Executado 30, 7 e 1 dia antes da data de início dos Termos e Condições novos ou revisados, às 21h. MINT.TNC_ACCEPTANCE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Plano de taxas expirando Envia uma notificação aos desenvolvedores afetados para avisar com antecedência que um plano de tarifas vai expirar. Executado 30, 7 e 1 dia antes do vencimento do plano de tarifas, às 21h. MINT.EXPIRING_RATE_PLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT

Gerenciar a programação de jobs de monetização usando a API

As seções a seguir descrevem como gerenciar a programação de jobs de monetização usando a API:

Para mais informações sobre as APIs descritas nesta seção, consulte Jobs programados na referência da API.

Como configurar acionadores

O programador depende de gatilhos para executar jobs. Um job programado é executado quando o acionador associado a ele é executado. As propriedades de um gatilho configuram a execução do job. Ao definir o valor dessas propriedades, é possível controlar características da execução do job, como quando e com que frequência ele é executado.

Os dois tipos mais comuns de acionadores são acionadores cron e acionadores simples. Um gatilho cron tem uma propriedade cronExpression que especifica uma programação de execução. Um gatilho simples não tem uma propriedade cronExpression. Você especifica o startTime para indicar quando o gatilho entra em vigor e, opcionalmente, o endTime.

As propriedades do gatilho são as seguintes (todos os horários listados estão em UTC):

Propriedade Descrição
cronExpression Expressão cron para criar uma programação de execução para o gatilho, como: "Às 8h de segunda a sexta-feira" ou "À 1h30 da última sexta-feira do mês". Consulte Como criar expressões cron para mais detalhes.

Especificar essa propriedade define o gatilho como um gatilho de cron.

Observação: se cronExpression e startTime/endTime forem especificados, cronExpression terá precedência.

enabled Flag que indica se o gatilho está ativado para execução. O valor pode ser um dos seguintes:
  • true. O gatilho está ativado para execução.
  • false. O gatilho está desativado e não será executado.
endTime Horário no formato de época em que a programação do gatilho não está mais em vigor.
group Tipo de servidor em que o gatilho será executado. Por exemplo, se o gatilho precisar ser executado em um servidor de gerenciamento, o valor deverá ser definido como management-server. Se o gatilho for executado em um servidor de processamento de mensagens, o valor deverá ser definido como message-processor.
id Identificação do acionador.
jobId Identificação do job a ser executado.
name Nome exclusivo usado para identificar o acionador.
priority Prioridade de execução relativa dos acionadores se vários deles estiverem programados para serem executados ao mesmo tempo. Quanto menor o valor, maior a prioridade. Por exemplo, se dois acionadores estiverem programados para serem executados ao mesmo tempo, e se um tiver prioridade 1 e o outro prioridade 2, o acionador com prioridade 1 será executado primeiro.

Essa propriedade só se aplica se vários gatilhos tiverem exatamente o mesmo horário de execução.

startTime Aplicável apenas a acionadores simples.

Horário no formato de época em que a programação do acionador entra em vigor.

Observação: se cronExpression e startTime/endTime forem especificados, cronExpression terá precedência.

suiteId Flag que especifica se a parte de notificação do sistema ou do conjunto de notificações padrão. Os valores válidos são DEFAULT ou SYSTEM, ou você pode especificar seu próprio nome de pacote exclusivo.
triggerDataMap Chave de bloqueio, custom_lock_key, que impede que vários servidores executem o mesmo job ao mesmo tempo.

Como criar expressões cron

Uma expressão cron é uma string que contém seis ou sete campos separados por espaços em branco. A expressão representa um conjunto de horários, normalmente como uma programação para executar uma rotina. As expressões cron especificadas na propriedade cronExpression de um acionador são usadas para programar a execução dele.

Uma expressão cron tem o seguinte formato: s m h dm m dw y

Em que:

Campo Descrição Obrigatório Valores permitidos Caracteres especiais permitidos
s Segundos Sim 0-59 , - * /
m Minutos Sim 0-59 , - * /
h Horas Sim 0-23 , - * /
dm Dia do mês Sim 0-31 , - * ? / L W
m Mês Sim 1 a 12 ou JAN a DEZ , - * /
dw Dia da semana Sim 1 a 7 ou SUN a SAT , - * ? / L #
y Ano Não Vazio ou 1970-2099 , - * /

Os caracteres especiais são definidos da seguinte maneira:

Caractere especial Descrição
* Usado para selecionar todos os valores em um campo. Por exemplo, * no campo de minutos significa a cada minuto.
? Usado para especificar algo em um dos dois campos em que o caractere é permitido, mas não no outro. Por exemplo, se você quiser que o acionador seja executado em um dia específico do mês (por exemplo, o dia 10), mas não se importa com o dia da semana, especifique 10 no campo "Dia do mês" e ? no campo "Dia da semana".
- Usado para especificar intervalos. Por exemplo, 10-12 no campo de hora significa as horas 10, 11 e 12.
, Usado para especificar valores adicionais. Por exemplo, "MON,WED,FRI" no campo "Dia da semana" significa segunda, quarta e sexta-feira.
/ Usado para especificar incrementos. Por exemplo, 0/15 no campo de segundos significa os segundos 0, 15, 30 e 45. E 5/15 no campo de segundos significa os segundos 5, 20, 35 e 50. Você também pode especificar / depois do caractere ". Isso é equivalente a ter 0 antes da barra. Especificar 1/3 no campo "Dia do mês" significa executar a cada três dias a partir do primeiro dia do mês.
L Tem um significado diferente em cada um dos dois campos em que é permitido. L no campo "dia do mês" significa o último dia do mês, ou seja, dia 31 para janeiro ou dia 28 para fevereiro em anos não bissextos. No campo "Dia da semana", L significa o último dia da semana, ou seja, 7 ou SAT. Mas, se usado no campo "Dia da semana" depois de outro valor, significa o último dia xxx do mês. Por exemplo, 6L significa a última sexta-feira do mês.
O Usado para especificar o dia da semana (segunda a sexta-feira) mais próximo do dia especificado. Por exemplo, se você especificar 15W no campo "Dia do mês", isso significa o dia da semana mais próximo do dia 15 do mês. Por exemplo, se o dia 15 for um sábado, o gatilho será executado na sexta-feira, dia 14. Se o dia 15 for um domingo, o gatilho será executado na segunda-feira, dia 16. Se o dia 15 for uma terça-feira, a execução vai acontecer nesse dia. No entanto, se você especificar 1W para o dia do mês e o dia 1 for um sábado, o gatilho será executado na segunda-feira, dia 3, porque não vai "pular" sobre o limite dos dias de um mês. O caractere "W" só pode ser especificado quando o dia do mês é um único dia, não um intervalo ou uma lista de dias.
# Usado para especificar o n-ésimo dia XXX do mês. Por exemplo, o valor 6#3 no campo dia da semana significa a terceira sexta-feira do mês (dia 6 = sexta-feira e #3 = a terceira do mês). Outros exemplos: 2#1 = a primeira segunda-feira do mês, 4#5 = a quinta quarta-feira do mês.

Confira alguns exemplos de expressões cron (todos os horários listados estão em UTC):

Expressão Cron Programação de execução
0 0 12 * * ? 12h todos os dias.
0 15 10 * * ? 2013 10h15 todos os dias durante o ano de 2013.
0 10,44 14 ? 3 QUA 14h10 e 14h44 todas as quartas-feiras de março.
0 15 10 ? * 6L 2013-2015 10h15 na última sexta-feira de cada mês durante os anos de 2013, 2014 e 2015.
0 15 10 ? * 6#3 10h15 na terceira sexta-feira de cada mês.

Como visualizar jobs programados usando a API

Para conferir todos os jobs programados, envie uma solicitação GET para /triggers?orgid={org_name}.

Exemplo:

$ curl -H "Accept:application/json" -X GET \ "http://localhost:8080/v1/mint/triggers?orgid={org_name}" \ -u email:password

Veja a seguir um exemplo de resposta:

[ {
  "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
},
...
]

Também é possível conferir um job programado específico enviando uma solicitação GET para /triggers/{trig_id}, em que {trig_id} é a identificação do acionador do job conforme descrito em Visão geral dos jobs programados. Exemplo:

$ curl -X GET \ "http://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT" \ -u email:password

Veja a seguir um exemplo de resposta:

{
    "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
}

Atualizar jobs programados usando a API

Para atualizar um job programado, mude as propriedades do gatilho dele. Por exemplo, talvez seja necessário mudar a programação de execução do gatilho.

Para jobs de acionamento do cron (ou seja, jobs que incluem um valor de expressão cron), só é possível mudar os valores das propriedades cronExpression e "enabled". Outras mudanças são ignoradas. Para jobs que não especificam um valor de expressão cron, é possível mudar outras propriedades, como startTime ou priority.

Para atualizar um job programado, envie uma solicitação PUT para /triggers/{trig_id}, em que {trig_id} é a identificação do acionador de jobs, conforme descrito em Visão geral dos jobs programados. Ao fazer a atualização, especifique no corpo da solicitação as configurações atualizadas e o ID do gatilho.

Por exemplo, a solicitação a seguir atualiza a expressão cron para o job de renovação do plano de tarifas para novos desenvolvedores para ser executado todos os dias às 5h 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

Como desativar e reativar um job programado usando a API

Para desativar um job programado, defina o valor da propriedade enabled do gatilho como false. Exemplo:

$ 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

Para reativar um job desativado, defina o valor da propriedade enabled do gatilho como true.

Próximas etapas

É recomendável resincronizar periodicamente com a monetização sua organização e todos os desenvolvedores, aplicativos e produtos que você criou usando os serviços de API do Edge. Saiba como em Sincronizar dados do Apigee Edge com a monetização.