Programar jobs de monetização

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Visão geral dos jobs programados

A monetização fornece um programador de jobs e um conjunto de jobs pré-agendados para serem executados nos horários designados.

A tabela abaixo lista os jobs pré-agendados fornecidos pela monetização e os horários em que eles estão programados para execução (todos os horários estão listados em UTC). Além disso, está listado o gatilho de cada job.

Job Descrição Programação (UTC) Gatilho
Alíquota mensal do desenvolvedor Busca a taxa fiscal do mecanismo fiscal de cada desenvolvedor e atualiza a entidade do desenvolvedor com a taxa fiscal 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 tarifas ativos ou novas tarifas para planos futuros que começam no dia atual. Todos os dias, cinco segundos após a meia-noite MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Atualizador do XeFeed Determina a taxa de câmbio em dólares americanos para cada moeda aceita. Todos os dias à meia-noite de 1 segundo MINT.XEFEED@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Renovar o plano de tarifa do desenvolvedor Sobrepor as datas de renovação de um plano de tarifas e calcular as taxas de rescisão antecipada. Todos os dias às 2h20 MINT.RENEW_DEV_RATEPLAN@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Repetir o redirecionamento da transação Observação: esse job foi descontinuado 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: esse job foi descontinuado e não afeta a monetização. Todos os dias às 5h30 MINT.TX_CLEANSER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Auditoria do 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 em uma tabela de auditoria, deduz o uso atual da conta de desenvolvedor e retorna o saldo de uso a zero. No primeiro dia de cada mês, cinco segundos após a meia-noite 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 pela monetização do Apigee Edge. Consulte Desativação.

No 11o dia de cada mês, 1 minuto após a meia-noite MINT.MONTLY_BILLING_DOCS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Contador do plano de tarifas do desenvolvedor Observação: esse job foi descontinuado e não afeta a monetização. Todos os dias, três segundos após a meia-noite MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Cobranças diárias Recomputa 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
Cobranças por hora Calcula todos os totais de transação para cada trimestre de uma hora. 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 acumuladas por e-mail A cada hora MINT.EMAIL_NOTIFICATION@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
Limite de atualização Observação: esse job foi descontinuado e não afeta a monetização. N/A (nunca executa) MINT.REFRESH_LIMIT@@@
message-processor@@@SYSTEM@@@
message-processor@@@SYSTEM

Além dos jobs listados acima, há jobs que podem ser ativados por meio de notificações de eventos, conforme listado 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 quando 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, independentemente de você configurar 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 de 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, independentemente de você configurar 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 sobre um novo produto de API 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, independentemente de você configurar 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 tarifa

Envia uma notificação aos desenvolvedores afetados sobre um novo plano de tarifa disponível. Todos os desenvolvedores inscritos no plano de tarifas principal são notificados de que um novo plano de tarifas está ativo.

Existem outros pontos:

  • Se o plano de tarifa for padrão, todos os desenvolvedores serão notificados.
  • Se for um plano de tarifação por categoria de desenvolvedor, somente os desenvolvedores nessa categoria vão receber notificações.
  • Se for um plano de tarifas do desenvolvedor, somente o desenvolvedor em questão vai ser notificado.
É executada na data de início do novo plano de tarifas, às 4h30. MINT.NEW_RATEPLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
Novo Tnc Envia uma notificação aos desenvolvedores afetados informando que Termos e Condições novos ou revisados foram publicados e que o desenvolvedor ainda não os aceitou. São veiculados 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 tarifas prestes a expirar Envia uma notificação aos desenvolvedores afetados para avisar com antecedência que um plano de tarifa vai expirar. Executado 30, 7 e 1 dia antes da expiração do plano de tarifas, às 21h MINT.EXPIRING_RATE_PLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT

Como 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 gatilho associado é 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.

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

As propriedades do acionador são as seguintes (todos os horários estão listados 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.

A especificação dessa propriedade define o acionador como um acionador cron.

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

enabled Sinalização 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 acionador não está mais em vigor.
group Tipo de servidor em que o acionador será executado. Por exemplo, se você precisar executar o acionador em um servidor de gerenciamento, o valor precisará ser definido como management-server. Se você precisar executar o acionador em um servidor de processamento de mensagens, defina o valor 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 acionadores estiverem programados para serem executados ao mesmo tempo. Quanto menor o valor, mais alta a prioridade. Por exemplo, se dois gatilhos estiverem programados para execução ao mesmo tempo, e se um gatilho tiver prioridade 1 e o outro, prioridade 2, o gatilho com prioridade 1 será executado primeiro.

Essa propriedade se aplicará somente se vários acionadores tiverem exatamente o mesmo tempo de execução.

startTime Aplicável apenas a gatilhos 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á prioridade.

suiteId Sinalização que especifica se a parte da notificação do pacote de notificações no nível do sistema ou do nível padrão. Os valores válidos são DEFAULT ou SYSTEM, ou especifique o próprio nome de conjunto exclusivo.
triggerDataMap Tecla 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 um espaço 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 gatilho são usadas para programar a execução desse gatilho.

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
m Mês Sim 1-12 ou JAN-DEZ , - * /
dw Dia da semana Sim 1-7 ou SUN-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, o * no campo de minuto significa 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 (digamos, dia 10), mas não se importa com qual 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 os dias 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 / após o caractere ". Fazer isso é equivalente a ter 0 antes de /. Especificar 1/3 no campo de 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. O campo L no dia do mês significa o último dia do mês, ou seja, o dia 31 para janeiro ou o dia 28 para fevereiro em anos não bissextos. No campo do dia da semana, L significa o último dia da semana, ou seja, 7 ou SAT. Mas, se usado no campo de dia da semana após outro valor, significa o último dia xxx do mês. Por exemplo, "6L" significa a última sexta-feira do mês.
W Usado para especificar o dia da semana (de segunda a sexta-feira) mais próximo do dia especificado. Por exemplo, se você especificar 15 W no campo de dia do mês, isso significa o dia da semana mais próximo ao dia 15 do mês. Portanto, 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, ele será executado na terça-feira, dia 15. No entanto, se você especificar "1W" para o dia do mês, e a primeira for um sábado, o acionador vai ser executado na segunda-feira, dia 3, porque não vai "pular" no 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 lista de dias.
# Usado para especificar o enésimo XXX dia 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.

Aqui estão 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 (meio-dia) todos os dias.
0 15 10 * * ? 2013 todos os dias do ano de 2013, às 10h15.
0 10,44 14 ? 3 QUA 14h10 e às 14h44 todas as quartas-feiras do mês de março.
0 15 10 ? * 6L 2013 a 2015 às 10h15 da última sexta-feira de cada mês durante os anos de 2013, 2014 e 2015.
0 15 10 ? * 6 no 3 10h15 da terceira sexta-feira de cada mês.

Como visualizar jobs programados usando a API

É possível ver todos os jobs programados atualmente enviando 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 ver um job programado específico enviando uma solicitação GET para /triggers/{trig_id}, em que {trig_id} é a identificação do acionador de jobs, conforme descrito em Visão geral de 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
}

Como atualizar jobs programados usando a API

É possível atualizar um job programado alterando as propriedades do acionador. Por exemplo, pode ser necessário alterar a programação de execução do gatilho.

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

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

Por exemplo, a solicitação a seguir atualiza a expressão cron para o job de renovação do novo plano de tarifa para desenvolvedores, que 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 acionador como falso. 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 verdadeiro.

Próximas etapas

É aconselhável sincronizar novamente com a monetização sua organização e todos os desenvolvedores, aplicativos e produtos que você criou usando os Serviços da API Edge. Saiba como em Sincronizar dados do Apigee Edge com a monetização.