1. Configure o contador de recursos
Habilite um recurso de exportação na política de autorização e estabeleça um limite de 500 por mês. Decida se exceder o limite é bloqueado ou permitido pela regra de excesso configurada desse recurso.
Os contadores de recursos pertencem à licença do cliente. Eles são separados do dispositivo do espaço de trabalho do fornecedor e das cotas de assinatura API. Os períodos de recursos diários e mensais usam UTC; um período mensal é redefinido no início do próximo mês UTC.
2. Abra um cliente SDK
Copie o ID do produto em Console > Produtos. Abra as chaves públicas de assinatura do mesmo produto e insira todos os pares ID da chave/chave pública no código de inicialização, substituindo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. A integração rápida pode gerar esse código. Não é necessário um arquivo de configuração; o SDK usa https://www.licentivo.com por padrão.
Para um direito normal, use RunFeature. Para uma ação de uso limitado, use RunMeteredFeature. Uma verificação de titularidade local bem-sucedida não prova que a cota on-line permanece.
3. Encerre a ação comercial
Persista um ID de trabalho exclusivo antes de chamar SDK. Reutilize esse ID ao tentar novamente a mesma tarefa comercial. O SDK primeiro reserva um uso, depois invoca o retorno de chamada e, em seguida, confirma o trabalho bem-sucedido ou cancela uma falha comercial conhecida.
// client was opened once at application startup.
// jobID comes from your durable business task record.
jobID := os.Getenv("LICENTIVO_OPERATION_ID")
if jobID == "" {
return fmt.Errorf("persist a unique task ID before exporting")
}
err := client.RunMeteredFeature(ctx, "export", 1, jobID, func() error {
// Return success only after the output has been saved.
return os.WriteFile("licensed-report.txt", []byte("Metered export\n"), 0600)
})
if err != nil {
return err
}4. Recupere o trabalho interrompido
Quando uma tarefa já foi registrada como bem-sucedida, tentar novamente seu ID permite que SDK liquide a contabilidade pendente sem executar novamente seu retorno de chamada. Se o processo morreu enquanto o retorno de chamada de negócios estava em execução, SDK não poderá saber se a operação externa foi concluída.
Inspecione o resultado comercial salvo. Ligue para ResolveMeteredFeature(ctx, jobID, true) para sucesso confirmado ou falso para falha confirmada. Isso resolve apenas a contabilidade. Nunca repita cegamente um pagamento, entrega de arquivo ou outra ação irreversível.
A reserva padrão dura 15 minutos e é limitada por uma redefinição de período UTC. Finalizar e resolver antes do vencimento; não use o wrapper simples para um trabalho que possa sobreviver à sua reserva. Uma tarefa comercial cancelada precisa de um novo ID se o cliente iniciar deliberadamente uma nova tentativa.
5. Verifique o comportamento do contador
- Comece com um pequeno limite de teste. Uma exportação bem-sucedida deve aumentar o uso em um.
- Faça com que o retorno de chamada retorne um erro antes de concluir o trabalho: sua reserva deverá ser cancelada.
- Tente novamente um ID de trabalho gravado com sucesso e confirme se o retorno de chamada não é repetido.
- Esgote uma cota bloqueada e confirme se o retorno de chamada não é executado. Mostre uma mensagem clara com o próximo horário de reinicialização.
- Simule uma tarefa interrompida em seu ambiente de teste e resolva-a a partir do registro comercial durável.
Erros comuns
As operações de contador requerem conectividade. Uma licença offline em cache por si só não autoriza uma reserva ou confirmação offline. Não transforme silenciosamente uma ação medida negada em uma ação ilimitada.
Uma chamada de consumo direto é deduzida imediatamente. Use o retorno de chamada medido quando o uso for contabilizado somente após o sucesso do negócio. Uma falha na rede após a conclusão do trabalho é um problema de recuperação contábil; não presuma que o trabalho falhou.
IDs de tarefas estáveis e diários SDK ajudam nas novas tentativas; eles não substituem sua transação comercial ou armazenamento durável de resultados. Mantenha o resultado comercial e o cache privado do SDK disponíveis durante a recuperação.