Quickstart: Submeter um trabalho para filas e encaminhamento

Importante

A funcionalidade descrita nesta secção encontra-se atualmente em pré-visualização privada. A pré-visualização privada inclui acesso a SDKs e documentação para fins de teste que ainda não estão disponíveis publicamente. Aplicar para se tornar um adotador precoce preenchendo o formulário para pré-visualização de acesso a Azure Communication Services.

Introdução com Azure Communication Services Job Router, configurando o seu cliente. Em seguida, pode configurar a funcionalidade principal, como filas, políticas, trabalhadores e Empregos. Para saber mais sobre os conceitos de Job Router, visite a documentação conceptual do Job Router

Pré-requisitos

Configuração

Criar uma nova aplicação C#

Numa janela de consola (como cmd, PowerShell ou Bash), utilize o dotnet new comando para criar uma nova aplicação de consola com o nome JobRouterQuickstart. Este comando cria um projeto C# simples "Hello World" com um único ficheiro de origem: Programa.cs.

dotnet new console -o JobRouterQuickstart

Mude o seu diretório para a pasta de aplicação recém-criada e use o dotnet build comando para compilar a sua aplicação.

cd JobRouterQuickstart
dotnet build

Instale o pacote

Durante a pré-visualização privada, por favor descarregue o SDK a partir de GitHub.

Nota

Você deve ser um membro do grupo de pré-visualização privado para baixar os SDKs.

Adicione as seguintes using diretivas ao topo do Programa.cs para incluir os espaços de nomes JobRouter.

using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;

Atualizar Main assinatura de função para ser async e devolver a Task.

static async Task Main(string[] args)
{
  ...
}

Autenticar o cliente do Router de Emprego

Os clientes Job Router podem ser autenticados usando a sua cadeia de ligação adquirida a partir de um recurso Azure Communication Services no portal do Azure.

// Get a connection string to our Azure Communication Services resource.
var connectionString = "your_connection_string";
var client = new RouterClient(connectionString);

Criar uma política de distribuição

Job Router usa uma política de distribuição para decidir como os trabalhadores serão notificados dos empregos disponíveis e o tempo para viver para as notificações, conhecidas como Ofertas. Crie a política especificando o ID, um nome, uma oferta DETTL e um modo de distribuição.

var distributionPolicy = await routerClient.SetDistributionPolicyAsync(
    id: "distribution-policy-1",
    name: "My Distribution Policy",
    offerTTL: TimeSpan.FromSeconds(30),
    mode: new LongestIdleMode()
);

Criar uma fila

Crie a Fila especificando um ID, nome e forneça o ID do objeto de Política de Distribuição que criou acima.

var queue = await routerClient.SetQueueAsync(
    id: "queue-1",
    name: "My Queue",
    distributionPolicyId: distributionPolicy.Value.Id
);

Submeter um emprego

Agora, podemos submeter um trabalho diretamente a essa fila, com um selecionador de trabalhadores o que requer que o trabalhador tenha o rótulo Some-Skill superior a 10.

var job = await routerClient.CreateJobAsync(
    channelId: "my-channel",
    queueId: queue.Value.Id,
    priority: 1,
    workerSelectors: new List<LabelSelector>
    {
        new LabelSelector(
            key: "Some-Skill", 
            @operator: LabelOperator.GreaterThan, 
            value: 10)
    });

Registar um trabalhador

Agora, registamos um trabalhador para receber trabalho dessa fila, com um rótulo igual Some-Skill a 11 e capacidade em my-channel.

var worker = await routerClient.RegisterWorkerAsync(
    id: "worker-1",
    queueIds: new[] { queue.Value.Id },
    totalCapacity: 1,
    labels: new LabelCollection()
    {
        ["Some-Skill"] = 11
    },
    channelConfigurations: new List<ChannelConfiguration>
    {
        new ChannelConfiguration("my-channel", 1)
    }
);

Oferta

Devemos obter um RouterWorkerOfferIssou da nossa subscrição eventGrid. No entanto, também podemos esperar alguns segundos e, em seguida, consultar o trabalhador diretamente contra a API jobRouter para ver se lhe foi emitida uma oferta.

await Task.Delay(TimeSpan.FromSeconds(2));
var result = await routerClient.GetWorkerAsync(worker.Value.Id);
foreach (var offer in result.Value.Offers)
{
    Console.WriteLine($"Worker {worker.Value.Id} has an active offer for job {offer.JobId}");
}

Executar a aplicação usando dotnet run e observar os resultados.

dotnet run


Worker worker-1 has an active offer for job 6b83c5ad-5a92-4aa8-b986-3989c791be91

Nota

Executar a aplicação mais de uma vez fará com que um novo Job seja colocado na fila de cada vez. Isto pode fazer com que o Trabalhador seja oferecido um Trabalho diferente daquele criado quando se executam o código acima. Já que isto pode distorcer o seu pedido, considerando remover Jobs na fila cada vez. Consulte a documentação da SDK para gerir uma fila ou um Trabalho.