Condividi tramite


Gestire una coda

Questa guida illustra i passaggi per creare e gestire una coda del router processo.

Prerequisiti

Creare un criterio di distribuzione e una coda

Per creare una coda semplice in Router processo, usare l'SDK per specificare l'ID coda, il nome e un ID dei criteri di distribuzione. I criteri di distribuzione devono essere creati in anticipo perché il router del processo convaliderà la sua esistenza al momento della creazione della coda. Nell'esempio seguente viene creato un criterio di distribuzione per controllare la modalità di generazione delle offerte di processi per i ruoli di lavoro.

var distributionPolicy = await administrationClient.CreateDistributionPolicyAsync(
    new CreateDistributionPolicyOptions(
        distributionPolicyId: "Longest_Idle_45s_Min1Max10",
        offerExpiresAfter: TimeSpan.FromSeconds(45),
        mode: new LongestIdleMode { MinConcurrentOffers = 1, MaxConcurrentOffers = 10 })
    {
        Name = "Longest Idle matching with a 45s offer expiration; min 1, max 10 offers",
    });

var queue = await administrationClient.CreateQueueAsync(
    new CreateQueueOptions(
        queueId: "XBOX_DEFAULT_QUEUE", 
        distributionPolicyId: distributionPolicy.Value.Id)
    {
        Name = "XBOX Default Queue"
    });
const distributionPolicy = await client.path("/routing/distributionPolicies/{distributionPolicyId}", "Longest_Idle_45s_Min1Max10").patch({
    body: {
        offerExpiresAfterSeconds: 45,
        mode: {
            kind: "longestIdle",
            minConcurrentOffers: 1,
            maxConcurrentOffers: 10
        },
        name: "Longest Idle matching with a 45s offer expiration; min 1, max 10 offers"
    },
    contentType: "application/merge-patch+json"
});

const queue = await client.path("/routing/queues/{queueId}", "XBOX_DEFAULT_QUEUE").patch({
    body: {
        distributionPolicyId: distributionPolicy.body.id,
        name: "XBOX Default Queue"
    },
    contentType: "application/merge-patch+json"
  });

distribution_policy = administration_client.upsert_distribution_policy(
    distribution_policy_id = "Longest_Idle_45s_Min1Max10",
    offer_expires_after = timedelta(seconds = 45),
    mode = LongestIdleMode(min_concurrent_offers = 1, max_concurrent_offers = 10),
    name = "Longest Idle matching with a 45s offer expiration; min 1, max 10 offers"
)

queue = administration_client.upsert_queue(
    queue_id = "XBOX_DEFAULT_QUEUE",
    name = "XBOX Default Queue",
    distribution_policy_id = distribution_policy.id
)
DistributionPolicy distributionPolicy = administrationClient.createDistributionPolicy(new CreateDistributionPolicyOptions(
    "Longest_Idle_45s_Min1Max10",
    Duration.ofSeconds(45),
    new LongestIdleMode().setMinConcurrentOffers(1).setMaxConcurrentOffers(10))
    .setName("Longest Idle matching with a 45s offer expiration; min 1, max 10 offers"));

RouterQueue queue = administrationClient.createQueue(new CreateQueueOptions(
    "XBOX_DEFAULT_QUEUE",
    distributionPolicy.getId())
    .setName("XBOX Default Queue"));

Aggiornare una coda

Job Router SDK aggiornerà una coda esistente quando viene chiamato il UpdateQueueAsync metodo .

queue.Name = "XBOX Updated Queue";
queue.Labels.Add("Additional-Queue-Label", new RouterValue("ChatQueue"));
await administrationClient.UpdateQueueAsync(queue);
await administrationClient.path("/routing/queues/{queueId}", queue.body.id).patch({
    body: {
        name: "XBOX Updated Queue",
        labels: { "Additional-Queue-Label": "ChatQueue" }
    },
    contentType: "application/merge-patch+json"
});
queue.name = "XBOX Updated Queue"
queue.labels["Additional-Queue-Label"] = "ChatQueue"
administration_client.upsert_queue(queue.id, queue)
queue.setName("XBOX Updated Queue");
queue.setLabels(Map.of("Additional-Queue-Label", new RouterValue("ChatQueue")));
administrationClient.updateQueue(queue.getId(), BinaryData.fromObject(queue), null);

Eliminare una coda

Per eliminare una coda usando Job Router SDK, chiamare il DeleteQueue metodo passando l'ID coda.

await administrationClient.DeleteQueueAsync(queue.Value.Id);
await client.path("/routing/queues/{queueId}", queue.body.id).delete();
administration_client.delete_queue(queue.id)
administrationClient.deleteQueue(queue.getId());

Nota

Per eliminare una coda è necessario assicurarsi che non vi siano processi attivi assegnati. Assicurarsi inoltre che non siano presenti riferimenti alla coda in alcun criterio di classificazione.