Mecanismo de regra de função do Azure
Como parte do modelo de extensibilidade do cliente, o Roteador de Trabalhos dos Serviços de Comunicação do Azure dá suporte a um mecanismo de regra baseado em Função do Azure. Ele oferece a capacidade de trazer sua própria função do Azure. Com o Azure Functions, você pode incorporar lógica personalizada e complexa ao processo de roteamento.
Criar uma função do Azure
Se você não estiver familiarizado com Azure Functions, consulte a Introdução ao Azure Functions para saber como criar sua primeira função com a ferramenta e linguagem favoritas.
Observação
Sua Função do Azure precisará ser configurada para usar um gatilho Http
O corpo da solicitação Http que é enviado à sua função incluirá os rótulos de cada uma das entidades envolvidas. Por exemplo, se você estiver escrevendo uma função para determinar a prioridade do trabalho, o conteúdo incluirá todos os rótulos de trabalho sob a chave job
.
{
"job": {
"label1": "foo",
"label2": "bar",
"urgent": true,
}
}
O exemplo a seguir inspecionará o valor do rótulo urgent
e retornará uma prioridade de 10 se ele for verdadeiro.
public static class GetPriority
{
[FunctionName("GetPriority")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var priority = 5;
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var data = JsonConvert.DeserializeObject<JObject>(requestBody);
var isUrgent = data["job"]["urgent"].Value<bool>();
if (isUrgent)
priority = 10;
return new OkObjectResult(JsonConvert.SerializeObject(priority));
}
}
Configurar uma política para usar a função do Azure
Inspecione a função implantada no portal do Azure e localize o URI da função e a chave de autenticação. Em seguida, use o SDK para configurar uma política que usa um mecanismo de regra para apontar para essa função.
await administrationClient.CreateClassificationPolicyAsync(
new CreateClassificationPolicyOptions("policy-1") {
PrioritizationRule = new FunctionRouterRule(new Uri("<insert function uri>")) {
Credential = new FunctionRouterRuleCredential("<insert function key>")
}});
Quando um novo trabalho for enviado ou atualizado, essa função será chamada para determinar a prioridade do trabalho.
Errors
Se a Função do Azure falhar ou retornar um código diferente de 200, o trabalho será movido para o estado ClassificationFailed
e você receberá um JobClassificationFailedEvent
da Grade de Eventos contendo detalhes do erro.
Próximas etapas
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