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.

Próximos passos