Freigeben über


Verwalten einer Warteschlange

In diesem Leitfaden werden die Schritte zum Erstellen und Verwalten einer Auftragsrouter-Warteschlange beschrieben.

Voraussetzungen

Erstellen einer Verteilungsrichtlinie und einer Warteschlange

Verwenden Sie zum Erstellen einer einfachen Warteschlange im Auftragsrouter das SDK, um die Warteschlangen-ID, den Namen und eine Verteilungsrichtlinien-ID anzugeben. Die Verteilungsrichtlinie muss im Voraus erstellt werden, da der Auftragsrouter seine Existenz beim Erstellen der Warteschlange überprüft. Im folgenden Beispiel wird eine Verteilungsrichtlinie erstellt, um zu steuern, wie Auftragsangebote für Worker generiert werden.

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

Aktualisieren einer Warteschlange

Das Auftragsrouter-SDK aktualisiert eine vorhandene Warteschlange, wenn die UpdateQueueAsync Methode aufgerufen wird.

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

Löschen einer Warteschlange

Rufen Sie zum Löschen einer Warteschlange mithilfe des Auftragsrouter-SDK die DeleteQueue Methode auf, die die Warteschlangen-ID übergibt.

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());

Hinweis

Um eine Warteschlange zu löschen, müssen Sie sicherstellen, dass ihr keine aktiven Aufträge zugewiesen sind. Stellen Sie außerdem sicher, dass in allen Klassifizierungsrichtlinien keine Verweise auf die Warteschlange vorhanden sind.