Snabbstart: Skicka ett jobb för köer och routning

Viktigt

Funktioner som beskrivs i det här avsnittet är för närvarande i privat förhandsversion. Privat förhandsversion innehåller åtkomst till SDK:er och dokumentation i testsyfte som ännu inte är tillgängliga offentligt. Använd för att bli en tidig användare genom att fylla i formuläret för förhandsversionsåtkomst till Azure Communication Services.

Kom igång med Azure Communication Services jobbrouter genom att konfigurera klienten. Sedan kan du konfigurera kärnfunktioner som köer, principer, arbetare och jobb. Mer information om begrepp för jobbroutrar finns i konceptuell dokumentation om Jobbrouter

Förutsättningar

Inrätta

Skapa ett nytt C#-program

I ett konsolfönster (till exempel cmd, PowerShell eller Bash) använder du dotnet new kommandot för att skapa en ny konsolapp med namnet JobRouterQuickstart. Det här kommandot skapar ett enkelt C#-projekt "Hello World" med en enda källfil: Program.cs.

dotnet new console -o JobRouterQuickstart

Ändra katalogen till den nyligen skapade appmappen dotnet build och kompilera programmet med kommandot .

cd JobRouterQuickstart
dotnet build

Installera paketet

Ladda ned SDK:et från GitHub under privat förhandsversion.

Anteckning

Du måste vara medlem i den privata förhandsgranskningsgruppen för att kunna ladda ned SDK:erna.

Lägg till följande using direktiv överst i Program.cs för att inkludera JobRouter-namnrymderna.

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

Uppdatera Main funktionssignaturen så att den blir async och returnerar en Task.

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

Autentisera jobbrouterklienten

Jobbrouterklienter kan autentiseras med anslutningssträngen som hämtats från en Azure Communication Services resurs i Azure Portal.

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

Skapa en distributionsprincip

Jobbrouter använder en distributionsprincip för att bestämma hur Arbetare ska meddelas om tillgängliga jobb och hur länge de ska leva för aviseringarna, så kallade Erbjudanden. Skapa principen genom att ange ID, ett namn, en offerTTL och ett distributionsläge.

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

Skapa en kö

Skapa kön genom att ange ett ID, namn och ange det distributionsprincipobjektets ID som du skapade ovan.

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

Skicka ett jobb

Nu kan vi skicka ett jobb direkt till kön, med en arbetsväljare som kräver att arbetaren har etiketten Some-Skill större än 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)
    });

Registrera en arbetare

Nu registrerar vi en arbetare för att ta emot arbete från kön, med en etikett Some-Skill på lika med 11 och kapacitet på 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)
    }
);

Erbjudande

Vi bör hämta en RouterWorkerOfferIssued från vår EventGrid-prenumeration. Men vi kan också vänta några sekunder och sedan fråga arbetaren direkt mot JobRouter-API:et för att se om ett erbjudande har utfärdats till den.

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}");
}

Kör programmet med och dotnet run observera resultatet.

dotnet run


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

Anteckning

Om programmet körs mer än en gång placeras ett nytt jobb i kön varje gång. Detta kan göra att Worker erbjuds ett annat jobb än det som skapades när du kör koden ovan. Eftersom detta kan förvränga din begäran kan du överväga att ta bort jobb i kön varje gång. Se SDK-dokumentationen för att hantera en kö eller ett jobb.