Política de exceção
Uma política de exceção é um conjunto de regras que define quais ações executar quando uma condição é disparada. Você pode salvar essas políticas dentro do Job Router e anexá-las a uma ou mais Filas.
Gatilhos
Os seguintes gatilhos podem ser usados para acionar ações:
Comprimento da fila - Acionado quando o comprimento da fila excede um limite especificado ao adicionar o trabalho à fila.
Tempo de espera - Acionado quando o trabalho está aguardando na fila pelo limite especificado.
Quando esses gatilhos são acionados, eles executam uma ou mais ações e enviam um evento disparado por exceção por meio da Grade de Eventos.
Ações
Cancelar - Cancela o trabalho e remove-o da fila.
Reclassificar - Reaplica a política de classificação especificada com rótulos modificados ao trabalho.
Reclassificação manual - Modifica os seletores de fila, prioridade e trabalho para o trabalho.
Exemplos
No exemplo a seguir, configuramos uma política de exceção que cancelará um trabalho antes que ele ingresse em uma fila com um comprimento maior que 100.
await administrationClient.CreateExceptionPolicyAsync(new CreateExceptionPolicyOptions(
exceptionPolicyId: "maxQueueLength",
exceptionRules: new List<ExceptionRule>
{
new (id: "cancelJob",
trigger: new QueueLengthExceptionTrigger(threshold: 100),
actions: new List<ExceptionAction>{ new CancelExceptionAction() })
}) { Name = "Max Queue Length Policy" });
await administrationClient.path("/routing/exceptionPolicies/{exceptionPolicyId}", "maxQueueLength").patch({
body: {
name: "Max Queue Length Policy",
exceptionRules: [
{
id: "cancelJob",
trigger: { kind: "queueLength", threshold: 100 },
actions: [{ kind: "cancel" }]
}
]
}
});
administration_client.upsert_exception_policy(
exception_policy_id = "maxQueueLength",
name = "Max Queue Length Policy",
exception_rules = [
ExceptionRule(
id = "cancelJob",
trigger = QueueLengthExceptionTrigger(threshold = 100),
actions = [ CancelExceptionAction() ]
)
]
)
administrationClient.createExceptionPolicy(new CreateExceptionPolicyOptions("maxQueueLength",
List.of(new ExceptionRule(
"cancelJob",
new QueueLengthExceptionTrigger(100),
List.of(new CancelExceptionAction())))
).setName("Max Queue Length Policy"));
No seguinte exemplo, configuramos uma política de exceção com regras que:
- Definirão a prioridade do trabalho como 10 depois que ele estiver aguardando na fila por um minuto.
- Moverão o trabalho para
queue2
depois que ele estiver aguardando por cinco minutos.
await administrationClient.CreateExceptionPolicyAsync(new CreateExceptionPolicyOptions(
exceptionPolicyId: "policy2",
exceptionRules: new List<ExceptionRule>
{
new(
id: "increasePriority",
trigger: new WaitTimeExceptionTrigger(threshold: TimeSpan.FromMinutes(1)),
actions: new List<ExceptionAction>
{
new ManualReclassifyExceptionAction { Priority = 10 }
}),
new(
id: "changeQueue",
trigger: new WaitTimeExceptionTrigger(threshold: TimeSpan.FromMinutes(5)),
actions: new List<ExceptionAction>
{
new ManualReclassifyExceptionAction { QueueId = "queue2" }
})
}) { Name = "Escalation Policy" });
await administrationClient.path("/routing/exceptionPolicies/{exceptionPolicyId}", "policy2").patch({
body: {
name: "Escalation Policy",
exceptionRules: [
{
id: "increasePriority",
trigger: { kind: "waitTime", thresholdSeconds: "60" },
actions: [{ "manual-reclassify", priority: 10 }]
},
{
id: "changeQueue",
trigger: { kind: "waitTime", thresholdSeconds: "300" },
actions: [{ kind: "manual-reclassify", queueId: "queue2" }]
}]
},
contentType: "application/merge-patch+json"
});
administration_client.upsert_exception_policy(
exception_policy_id = "policy2",
name = "Escalation Policy",
exception_rules = [
ExceptionRule(
id = "increasePriority",
trigger = WaitTimeExceptionTrigger(threshold_seconds = 60),
actions = [ ManualReclassifyExceptionAction(priority = 10) ]
),
ExceptionRule(
id = "changeQueue",
trigger = WaitTimeExceptionTrigger(threshold_seconds = 60),
actions = [ ManualReclassifyExceptionAction(queue_id = "queue2") ]
)
]
)
administrationClient.createExceptionPolicy(new CreateExceptionPolicyOptions("policy2", List.of(
new ExceptionRule("increasePriority", new WaitTimeExceptionTrigger(Duration.ofMinutes(1)),
List.of(new ManualReclassifyExceptionAction().setPriority(10))),
new ExceptionRule("changeQueue", new WaitTimeExceptionTrigger(Duration.ofMinutes(5)),
List.of(new ManualReclassifyExceptionAction().setQueueId("queue2"))))
).setName("Escalation Policy"));
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de