큐 관리
이 가이드에서는 작업 라우터 큐를 만들고 관리하는 단계를 간략하게 설명합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 배포된 Communication Services 리소스. Communication Services 리소스 만들기
- 선택 사항: 빠른 시작을 완료하여 작업 라우터 시작
배포 정책 및 큐 만들기
작업 라우터에서 간단한 큐를 만들려면 SDK를 사용하여 큐 ID, 이름 및 배포 정책 ID를 지정합니다. 작업 라우터가 큐를 만들 때 해당 존재의 유효성을 검사하기 때문에 배포 정책을 미리 만들어야 합니다. 다음 예제에서는 작업자에 대해 작업 제품이 생성되는 방식을 제어하는 배포 정책을 만듭니다.
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"));
큐 업데이트
작업 라우터 SDK는 UpdateQueueAsync
메서드가 호출될 때 기존 큐를 업데이트합니다.
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);
큐 삭제
작업 라우터 SDK를 사용하여 큐를 삭제하려면 큐 ID를 전달하는 DeleteQueue
메서드를 호출합니다.
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());
참고 항목
큐를 삭제하려면 큐에 할당된 활성 작업이 없는지 확인해야 합니다. 또한 분류 정책에 큐에 대한 참조가 없는지 확인합니다.