Mecanismo de regra de função do Azure
Como parte do modelo de extensibilidade do cliente, o Roteador de Trabalho dos Serviços de Comunicação do Azure dá suporte a um mecanismo de regras baseado em Função do Azure. Dá-lhe a capacidade de trazer a sua própria função do Azure. Com o Azure Functions, você pode incorporar lógica personalizada e complexa no processo de roteamento.
Criando uma função do Azure
Se você é novo no Azure Functions, consulte Introdução ao Azure Functions para saber como criar sua primeira função com sua ferramenta e idioma favoritos.
Nota
Sua Função do Azure precisará ser configurada para usar um gatilho Http
O corpo do pedido Http que é enviado para a sua função incluirá as etiquetas de cada uma das entidades envolvidas. Por exemplo, se você estiver escrevendo uma função para determinar a prioridade do trabalho, a carga incluirá todos os rótulos de trabalho sob a job
chave.
{
"job": {
"label1": "foo",
"label2": "bar",
"urgent": true,
}
}
O exemplo a seguir inspecionará o urgent
valor do rótulo e retornará uma prioridade de 10 se 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 sua 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 é enviado ou atualizado, essa função será chamada para determinar a prioridade do trabalho.
Erros
Se a Função do Azure falhar ou retornar um código diferente de 200, o trabalho será movido para o ClassificationFailed
estado e você receberá uma JobClassificationFailedEvent
Grade de Eventos contendo detalhes do erro.