Hızlı Başlangıç: Kuyruğa alma ve yönlendirme için iş gönderme
İstemcinizi ayarlayıp kuyruklar, ilkeler, çalışanlar ve İşler gibi temel işlevleri yapılandırarak Azure İletişim Hizmetleri İş Yönlendiricisi'ni kullanmaya başlayın. İş Yönlendiricisi kavramları hakkında daha fazla bilgi edinmek için İş Yönlendiricisi kavramsal belgelerini ziyaret edin
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.
- İşletim sisteminiz için en son sürüm .NET istemci kitaplığı .
Örnek kod
GitHub'da bu hızlı başlangıç için örnek kodu gözden geçirebilir ve indirebilirsiniz.
Ayarlama
Yeni bir C# uygulaması oluşturma
Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı JobRouterQuickstart
yeni bir konsol uygulaması oluşturmak için komutunu kullanındotnet new
. Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs.
dotnet new console -o JobRouterQuickstart
Dizininizi yeni oluşturulan uygulama klasörüne değiştirin ve komutunu kullanarak dotnet build
uygulamanızı derleyin.
cd JobRouterQuickstart
dotnet build
paketini yükleyin
NuGet ile .NET için Azure İletişim İş Yönlendiricisi istemci kitaplığını yükleyin:
dotnet add package Azure.Communication.JobRouter
.NET sürüm 1.0.0 veya üzeri için Azure İletişim İşi Yönlendiricisi istemci kitaplığını kullanmanız gerekir.
JobRouter ad alanlarını eklemek için program.cs dosyasının en üstüne aşağıdaki using
yönergeleri ekleyin.
using Azure.Communication.JobRouter;
İş Yönlendiricisi istemcisini ve yönetim istemcisini başlatma
İş Yönlendiricisi istemcilerinin kimliği, Azure portalındaki bir Azure İletişim Hizmetleri kaynağından alınan bağlantı dizesi kullanılarak doğrulanabilir. İş Yönlendiricisi hizmetiyle etkileşime geçmek için hem bir istemci hem de bir yönetim istemcisi oluşturuyoruz. Yönetici istemcisi kuyrukları ve ilkeleri sağlamak için kullanılırken, istemci işleri göndermek ve çalışanları kaydetmek için kullanılır. bağlantı dizesi hakkında daha fazla bilgi için bkz. access-your-connection-strings-and-service-endpoints.
// Get a connection string to our Azure Communication Services resource.
var routerAdminClient = new JobRouterAdministrationClient("your_connection_string");
var routerClient = new JobRouterClient("your_connection_string");
Dağıtım ilkesi oluşturma
İş Yönlendiricisi, Çalışanlara kullanılabilir İşler hakkında nasıl bildirim ve bildirimler için yaşam süresi (Teklifler olarak bilinir) bildirileceğine karar vermek için bir dağıtım ilkesi kullanır. Kimlik, ad, offerExpiresAfter ve dağıtım modunu belirterek ilkeyi oluşturun.
var distributionPolicy = await routerAdminClient.CreateDistributionPolicyAsync(
new CreateDistributionPolicyOptions(
distributionPolicyId: "distribution-policy-1",
offerExpiresAfter: TimeSpan.FromMinutes(1),
mode: new LongestIdleMode())
{
Name = "My distribution policy"
}
);
Kuyruk oluştur
Bir kimlik, ad belirterek Kuyruk oluşturun ve yukarıda oluşturduğunuz Dağıtım İlkesi nesnesinin kimliğini belirtin.
var queue = await routerAdminClient.CreateQueueAsync(
new CreateQueueOptions(queueId: "queue-1", distributionPolicyId: distributionPolicy.Value.Id)
{
Name = "My Queue"
});
İş gönderme
Şimdi, çalışanın etiketi Some-Skill
10'dan büyük olmasını gerektiren bir çalışan seçicisi ile doğrudan bu kuyruğa bir iş gönderebiliriz.
var job = await routerClient.CreateJobAsync(
new CreateJobOptions(jobId: "job-1", channelId: "voice", queueId: queue.Value.Id)
{
Priority = 1,
RequestedWorkerSelectors =
{
new RouterWorkerSelector(key: "Some-Skill", labelOperator: LabelOperator.GreaterThan, value: new RouterValue(10))
}
});
Çalışan oluşturma
Şimdi bu kuyruktan iş almak için 11'e eşit etikete Some-Skill
ve üzerinde my-channel
kapasiteye sahip bir çalışan oluşturuyoruz.
var worker = await routerClient.CreateWorkerAsync(
new CreateWorkerOptions(workerId: "worker-1", capacity: 1)
{
Queues = { queue.Value.Id },
Labels = { ["Some-Skill"] = new RouterValue(11) },
Channels = { new RouterChannel(channelId: "voice", capacityCostPerJob: 1) },
AvailableForOffers = true
});
Teklif alma
Event Grid aboneliğimizden RouterWorkerOfferIssued almalıyız. Ancak birkaç saniye bekleyebilir ve ardından bir teklif yayımlanıp sunulmadığını görmek için çalışanı doğrudan JobRouter API'sine karşı sorgulayabiliriz.
await Task.Delay(TimeSpan.FromSeconds(10));
worker = await routerClient.GetWorkerAsync(worker.Value.Id);
foreach (var offer in worker.Value.Offers)
{
Console.WriteLine($"Worker {worker.Value.Id} has an active offer for job {offer.JobId}");
}
İş teklifini kabul etme
Ardından çalışan, işi çalışana atayan SDK'yı kullanarak iş teklifini kabul edebilir.
var accept = await routerClient.AcceptJobOfferAsync(workerId: worker.Value.Id, offerId: worker.Value.Offers.FirstOrDefault().OfferId);
Console.WriteLine($"Worker {worker.Value.Id} is assigned job {accept.Value.JobId}");
İşi tamamlama
Çalışan işle ilişkili çalışmayı tamamladıktan sonra (örneğin, aramayı tamamladıktan) sonra işi tamamlarız.
await routerClient.CompleteJobAsync(new CompleteJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId));
Console.WriteLine($"Worker {worker.Value.Id} has completed job {accept.Value.JobId}");
İşi kapatma
Çalışan yeni işleri almaya hazır olduğunda, çalışanın işi kapatması gerekir. İsteğe bağlı olarak, çalışan işin sonucunu belirtmek için bir değerlendirme kodu sağlayabilir.
await routerClient.CloseJobAsync(new CloseJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId) {
DispositionCode = "Resolved"
});
Console.WriteLine($"Worker {worker.Value.Id} has closed job {accept.Value.JobId}");
İşi silme
İş kapatıldıktan sonra, bu örneği yeniden çalıştırırsak işi aynı kimlikle yeniden oluşturabilmek için işi silebiliriz
await routerClient.DeleteJobAsync(accept.Value.JobId);
Console.WriteLine($"Deleting job {accept.Value.JobId}");
Kodu çalıştırma
kullanarak dotnet run
uygulamayı çalıştırın ve sonuçları gözlemleyin.
dotnet run
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Dekont
Uygulamayı birden çok kez çalıştırmak, her seferinde yeni bir İşin kuyruğa yerleştirilmesine neden olur. Bu, çalışana yukarıdaki kodu çalıştırdığınızda oluşturulandan başka bir İş teklif edilmesine neden olabilir. Bu, isteğinizi çarpıtabileceği için kuyruktaki İşleri her seferinde silmeyi göz önünde bulundurun. Kuyruk veya İş yönetimi için SDK belgelerine bakın.
Başvuru belgeleri
.NET SDK başvurusundan veya REST API başvurusundan Azure İletişim Hizmetleri İş Yönlendiricisi'nin tüm özellikleri hakkında bilgi edinin.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.
- Node.js Active LTS ve Maintenance LTS sürümlerinin en son sürümleri.
Örnek kod
GitHub'da bu hızlı başlangıç için örnek kodu gözden geçirebilir ve indirebilirsiniz.
Ayarlama
Yeni web uygulaması oluşturma
Terminal veya konsol penceresinde uygulamanız için yeni bir klasör oluşturun ve bu klasöre gidin.
mkdir acs-router-quickstart && cd acs-router-quickstart
Komutunu çalıştırarak npm init
varsayılan ayarlarla bir package.json dosyası oluşturun.
npm init -y
Bu hızlı başlangıcın kodunu ekleyeceğiniz yeni bir dosya index.js
oluşturun.
Paketleri yükleme
JavaScript sürüm 1.0.0 veya üzeri için Azure İletişim İş Yönlendiricisi istemci kitaplığını kullanmanız gerekir.
npm install
JavaScript için aşağıdaki İletişim Hizmetleri SDK'larını yüklemek için komutunu kullanın.
npm install @azure-rest/communication-job-router --save
Uygulama çerçevesini ayarlama
index.js
dosyasına aşağıdaki kodu ekleyin. hızlı başlangıcın kodunu işleve main
ekleyeceğiz.
const JobRouterClient = require('@azure-rest/communication-job-router').default;
const main = async () => {
console.log("Azure Communication Services - Job Router Quickstart")
// Quickstart code goes here
};
main().catch((error) => {
console.log("Encountered an error");
console.log(error);
})
İş Yönlendiricisi istemcisini başlatma
İş Yönlendiricisi istemcilerinin kimliği, Azure portalındaki bir Azure İletişim Hizmetleri kaynağından alınan bağlantı dizesi kullanılarak doğrulanabilir. İş Yönlendiricisi hizmetiyle etkileşime geçmek için bir istemci oluşturuyoruz. bağlantı dizesi hakkında daha fazla bilgi için bkz. access-your-connection-strings-and-service-endpoints.
İşlevin içine index.js
main
aşağıdaki kodu ekleyin.
const connectionString = process.env["COMMUNICATION_CONNECTION_STRING"] ||
"endpoint=https://<resource-name>.communication.azure.com/;<access-key>";
const client = JobRouterClient(connectionString);
Dağıtım ilkesi oluşturma
İş Yönlendiricisi, çalışanlara kullanılabilir İşler hakkında nasıl bildirimde bulunulacaklarına ve Bildirimler için yaşam süresine (Teklifler olarak bilinir) karar vermek için bir dağıtım ilkesi kullanır. Kimlik, ad, offerExpiresAfterSeconds ve dağıtım modunu belirterek ilkeyi oluşturun.
const distributionPolicy = await client.path("/routing/distributionPolicies/{distributionPolicyId}", "distribution-policy-1").patch({
body: {
offerExpiresAfterSeconds: 60,
mode: { kind: "longest-idle" },
name: "My distribution policy"
},
contentType: "application/merge-patch+json"
});
Kuyruk oluştur
Bir kimlik, ad belirterek Kuyruk oluşturun ve yukarıda oluşturduğunuz Dağıtım İlkesi nesnesinin kimliğini belirtin.
const queue = await client.path("/routing/queues/{queueId}", "queue-1").patch({
body: {
name: "My Queue",
distributionPolicyId: distributionPolicy.body.id
},
contentType: "application/merge-patch+json"
});
İş gönderme
Şimdi, çalışanın etiketi Some-Skill
10'dan büyük olmasını gerektiren bir çalışan seçicisi ile doğrudan bu kuyruğa bir iş gönderebiliriz.
const job = await client.path("/routing/jobs/{jobId}", "job-1").patch({
body: {
channelId: "voice",
queueId: queue.body.id,
priority: 1,
requestedWorkerSelectors: [{ key: "Some-Skill", labelOperator: "greaterThan", value: 10 }]
},
contentType: "application/merge-patch+json"
});
Çalışan oluşturma
Şimdi bu kuyruktan iş almak için 11'e eşit etikete Some-Skill
ve üzerinde my-channel
kapasiteye sahip bir çalışan oluşturuyoruz.
let worker = await client.path("/routing/workers/{workerId}", "worker-1").patch({
body: {
capacity: 1,
queues: [queue.body.id],
labels: { "Some-Skill": 11 },
channels: [{ channelId: "voice", capacityCostPerJob: 1 }],
availableForOffers: true
},
contentType: "application/merge-patch+json"
});
Teklif alma
Event Grid aboneliğimizden RouterWorkerOfferIssued almalıyız. Ancak birkaç saniye bekleyebilir ve ardından bir teklif yayımlanıp sunulmadığını görmek için çalışanı doğrudan JobRouter API'sine karşı sorgulayabiliriz.
await new Promise(r => setTimeout(r, 10000));
worker = await client.path("/routing/workers/{workerId}", worker.body.id).get();
for (const offer of worker.body.offers) {
console.log(`Worker ${worker.body.id} has an active offer for job ${offer.jobId}`);
}
İş teklifini kabul etme
Ardından çalışan, işi çalışana atayan SDK'yı kullanarak iş teklifini kabul edebilir.
const accept = await client.path("/routing/workers/{workerId}/offers/{offerId}:accept", worker.body.id, worker.body.offers[0].offerId).post();
console.log(`Worker ${worker.body.id} is assigned job ${accept.body.jobId}`);
İşi tamamlama
Çalışan işle ilişkili çalışmayı tamamladıktan sonra (örneğin, aramayı tamamladıktan) sonra işi tamamlarız.
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:complete", accept.body.jobId, accept.body.assignmentId).post();
console.log(`Worker ${worker.body.id} has completed job ${accept.body.jobId}`);
İşi kapatma
Çalışan yeni işleri almaya hazır olduğunda, çalışanın işi kapatması gerekir. İsteğe bağlı olarak, çalışan işin sonucunu belirtmek için bir değerlendirme kodu sağlayabilir.
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:close", accept.body.jobId, accept.body.assignmentId).post({
body: { dispositionCode: "Resolved" }
});
console.log(`Worker ${worker.body.id} has closed job ${accept.body.jobId}`);
İşi silme
İş kapatıldıktan sonra, bu örneği yeniden çalıştırırsak işi aynı kimlikle yeniden oluşturabilmek için işi silebiliriz
await client.path("/routing/jobs/{jobId}", accept.body.jobId).delete();
console.log(`Deleting job ${accept.body.jobId}`);
Kodu çalıştırma
Kodu çalıştırmak için dosyanızın index.js
bulunduğu dizinde olduğunuzdan emin olun.
node index.js
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Dekont
Uygulamayı birden çok kez çalıştırmak, her seferinde yeni bir İşin kuyruğa yerleştirilmesine neden olur. Bu, çalışana yukarıdaki kodu çalıştırdığınızda oluşturulandan başka bir İş teklif edilmesine neden olabilir. Bu, isteğinizi çarpıtabileceği için kuyruktaki İşleri her seferinde silmeyi göz önünde bulundurun. Kuyruk veya İş yönetimi için SDK belgelerine bakın.
Başvuru belgeleri
JavaScript SDK başvurusundan veya REST API başvurusundan Azure İletişim Hizmetleri İş Yönlendiricisi'nin tüm özellikleri hakkında bilgi edinin.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.
- İşletim sisteminiz için Python 3.7+ .
Örnek kod
GitHub'da bu hızlı başlangıç için örnek kodu gözden geçirebilir ve indirebilirsiniz.
Ayarlama
Yeni Python uygulaması oluşturma
Terminal veya konsol penceresinde uygulamanız için yeni bir klasör oluşturun ve bu klasöre gidin.
mkdir jobrouter-quickstart && cd jobrouter-quickstart
paketini yükleyin
Python sürüm 1.0.0 veya üzeri için Azure İletişim İş Yönlendiricisi istemci kitaplığını kullanmanız gerekir.
Konsol isteminden aşağıdaki komutu yürütür:
pip install azure-communication-jobrouter
Uygulama çerçevesini ayarlama
adlı router-quickstart.py
yeni bir dosya oluşturun ve temel program yapısını ekleyin.
import time
from azure.communication.jobrouter import (
JobRouterClient,
JobRouterAdministrationClient
)
from azure.communication.jobrouter.models import (
LongestIdleMode,
RouterWorkerSelector,
LabelOperator,
RouterChannel,
CloseJobOptions
)
class RouterQuickstart(object):
print("Azure Communication Services - Job Router Quickstart")
#Job Router method implementations goes here
if __name__ == '__main__':
router = RouterQuickstart()
İş Yönlendiricisi istemcisini ve yönetim istemcisini başlatma
İş Yönlendiricisi istemcilerinin kimliği, Azure portalındaki bir Azure İletişim Hizmetleri kaynağından alınan bağlantı dizesi kullanılarak doğrulanabilir. İş Yönlendiricisi hizmetiyle etkileşime geçmek için hem bir istemci hem de bir yönetim istemcisi oluşturuyoruz. Yönetici istemcisi kuyrukları ve ilkeleri sağlamak için kullanılırken, istemci işleri göndermek ve çalışanları kaydetmek için kullanılır. bağlantı dizesi hakkında daha fazla bilgi için bkz. access-your-connection-strings-and-service-endpoints.
# Get a connection string to our Azure Communication Services resource.
router_admin_client = JobRouterAdministrationClient.from_connection_string(conn_str = "your_connection_string")
router_client = JobRouterClient.from_connection_string(conn_str = "your_connection_string")
Dağıtım ilkesi oluşturma
İş Yönlendiricisi, Çalışanlara kullanılabilir İşler hakkında nasıl bildirim ve bildirimler için yaşam süresi (Teklifler olarak bilinir) bildirileceğine karar vermek için bir dağıtım ilkesi kullanır. distribution_policy_id, ad, offer_expires_after_seconds değeri ve dağıtım modunu belirterek ilkeyi oluşturun.
distribution_policy = router_admin_client.upsert_distribution_policy(
distribution_policy_id ="distribution-policy-1",
offer_expires_after_seconds = 60,
mode = LongestIdleMode(),
name = "My distribution policy")
Kuyruk oluştur
Bir kimlik, ad belirterek Kuyruk oluşturun ve yukarıda oluşturduğunuz Dağıtım İlkesi nesnesinin kimliğini belirtin.
queue = router_admin_client.upsert_queue(
queue_id = "queue-1",
name = "My Queue",
distribution_policy_id = distribution_policy.id)
İş gönderme
Şimdi, çalışanın etiketi Some-Skill
10'dan büyük olmasını gerektiren bir çalışan seçicisi ile doğrudan bu kuyruğa bir iş gönderebiliriz.
job = router_client.upsert_job(
job_id = "job-1",
channel_id = "voice",
queue_id = queue.id,
priority = 1,
requested_worker_selectors = [
RouterWorkerSelector(
key = "Some-Skill",
label_operator = LabelOperator.GREATER_THAN,
value = 10
)
])
Çalışan oluşturma
Şimdi bu kuyruktan iş almak için 11'e eşit etikete Some-Skill
ve üzerinde my-channel
kapasiteye sahip bir çalışan oluşturuyoruz.
worker = router_client.upsert_worker(
worker_id = "worker-1",
capacity = 1,
queues = ["queue-1"],
labels = {
"Some-Skill": 11
},
channels = [RouterChannel(channel_id = "voice", capacity_cost_per_job = 1)],
available_for_offers = True
)
Teklif alma
Event Grid aboneliğimizden RouterWorkerOfferIssued almalıyız. Ancak birkaç saniye bekleyebilir ve ardından bir teklif yayımlanıp sunulmadığını görmek için çalışanı doğrudan JobRouter API'sine karşı sorgulayabiliriz.
time.sleep(10)
worker = router_client.get_worker(worker_id = worker.id)
for offer in worker.offers:
print(f"Worker {worker.id} has an active offer for job {offer.job_id}")
İş teklifini kabul etme
Ardından çalışan, işi çalışana atayan SDK'yı kullanarak iş teklifini kabul edebilir.
accept = router_client.accept_job_offer(worker_id = worker.id, offer_id = worker.offers[0].offer_id)
print(f"Worker {worker.id} is assigned job {accept.job_id}")
İşi tamamlama
Çalışan işle ilişkili çalışmayı tamamladıktan sonra (örneğin, aramayı tamamladıktan) sonra işi tamamlarız.
router_client.complete_job(job_id = job.id, assignment_id = accept.assignment_id)
print(f"Worker {worker.id} has completed job {accept.job_id}")
İşi kapatma
Çalışan yeni işleri almaya hazır olduğunda, çalışanın işi kapatması gerekir. İsteğe bağlı olarak, çalışan işin sonucunu belirtmek için bir değerlendirme kodu sağlayabilir.
router_client.close_job(job_id = job.id, assignment_id = accept.assignment_id, options = CloseJobOptions(disposition_code = "Resolved"))
print(f"Worker {worker.id} has closed job {accept.job_id}")
İşi silme
İş kapatıldıktan sonra, bu örneği yeniden çalıştırırsak işi aynı kimlikle yeniden oluşturabilmek için işi silebiliriz
router_client.delete_job(accept.job_id)
print(f"Deleting {accept.job_id}")
Kodu çalıştırma
Kodu çalıştırmak için dosyanızın router-quickstart.py
bulunduğu dizinde olduğunuzdan emin olun.
python router-quickstart.py
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Dekont
Uygulamayı birden çok kez çalıştırmak, her seferinde yeni bir İşin kuyruğa yerleştirilmesine neden olur. Bu, çalışana yukarıdaki kodu çalıştırdığınızda oluşturulandan başka bir İş teklif edilmesine neden olabilir. Bu, isteğinizi çarpıtabileceği için kuyruktaki İşleri her seferinde silmeyi göz önünde bulundurun. Kuyruk veya İş yönetimi için SDK belgelerine bakın.
Başvuru belgeleri
Python SDK başvurusundan veya REST API başvurusundan Azure İletişim Hizmetleri İş Yönlendiricisi'nin tüm özellikleri hakkında bilgi edinin.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.
- Java Development Kit (JDK) sürüm 8 veya üzeri.
- Apache Maven
Örnek kod
GitHub'da bu hızlı başlangıç için örnek kodu gözden geçirebilir ve indirebilirsiniz.
Ayarlama
Yeni java uygulaması oluşturma
Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı router-quickstart
yeni bir konsol uygulaması oluşturmak için aşağıdaki komutu kullanınmvn
. Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" Java projesi oluşturur: App.java.
mvn archetype:generate -DgroupId=com.communication.jobrouter.quickstart -DartifactId=jobrouter-quickstart-java -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Paketi dahil et
Java sürüm 1.0.0 veya üzeri için Azure İletişim İş Yönlendiricisi istemci kitaplığını kullanmanız gerekir.
BOM dosyasını dahil et
Kitaplığın azure-sdk-bom
Genel Kullanılabilirlik (GA) sürümüne bağımlılık almak için projenize öğesini ekleyin. Aşağıdaki kod parçacığında {bom_version_to_target} yer tutucusunun yerine sürüm numarasını yazın.
Ürün reçetesi hakkında daha fazla bilgi edinmek için bkz . Azure SDK ÜRÜN REÇETESI benioku.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
ve ardından doğrudan bağımlılığı sürüm etiketi olmadan bağımlılıklar bölümüne ekleyin.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-jobrouter</artifactId>
</dependency>
</dependencies>
Doğrudan bağımlılığı dahil et
Kitaplığın ürün reçetesinde bulunmayan belirli bir sürümüne bağımlılığı almak istiyorsanız, doğrudan bağımlılığı projenize aşağıdaki gibi ekleyin.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-jobrouter</artifactId>
<version>1.0.0</version>
</dependency>
Uygulama çerçevesini ayarlama
/src/main/java/com/communication/quickstart dizinine App.java
gidin ve dosyayı açın. Şu kodu ekleyin:
package com.communication.quickstart;
import com.azure.communication.jobrouter.JobRouterAdministrationClient;
import com.azure.communication.jobrouter.JobRouterAdministrationClientBuilder;
import com.azure.communication.jobrouter.JobRouterClient;
import com.azure.communication.jobrouter.JobRouterClientBuilder;
import com.azure.communication.jobrouter.*;
import com.azure.communication.jobrouter.models.*;
import java.time.Duration;
import java.util.List;
import java.util.Map;
public class App
{
public static void main(String[] args) throws IOException
{
System.out.println("Azure Communication Services - Job Router Quickstart");
// Quickstart code goes here
}
}
İş Yönlendiricisi istemcisini ve yönetim istemcisini başlatma
İş Yönlendiricisi istemcilerinin kimliği, Azure portalındaki bir Azure İletişim Hizmetleri kaynağından alınan bağlantı dizesi kullanılarak doğrulanabilir. İş Yönlendiricisi hizmetiyle etkileşime geçmek için hem bir istemci hem de bir yönetim istemcisi oluşturuyoruz. Yönetici istemcisi kuyrukları ve ilkeleri sağlamak için kullanılırken, istemci işleri göndermek ve çalışanları kaydetmek için kullanılır. bağlantı dizesi hakkında daha fazla bilgi için bkz. access-your-connection-strings-and-service-endpoints.
// Get a connection string to our Azure Communication Services resource.
JobRouterAdministrationClient routerAdminClient = new JobRouterAdministrationClientBuilder().connectionString("your_connection_string").buildClient();
JobRouterClient routerClient = new JobRouterClientBuilder().connectionString("your_connection_string").buildClient();
Dağıtım ilkesi oluşturma
İş Yönlendiricisi, Çalışanlara kullanılabilir İşler hakkında nasıl bildirim ve bildirimler için yaşam süresi (Teklifler olarak bilinir) bildirileceğine karar vermek için bir dağıtım ilkesi kullanır. Kimlik, ad, offerExpiresAfter ve dağıtım modunu belirterek ilkeyi oluşturun.
DistributionPolicy distributionPolicy = routerAdminClient.createDistributionPolicy(
new CreateDistributionPolicyOptions("distribution-policy-1", Duration.ofMinutes(1), new LongestIdleMode())
.setName("My distribution policy"));
Kuyruk oluştur
Bir kimlik, ad belirterek Kuyruk oluşturun ve yukarıda oluşturduğunuz Dağıtım İlkesi nesnesinin kimliğini belirtin.
RouterQueue queue = routerAdminClient.createQueue(
new CreateQueueOptions("queue-1", distributionPolicy.getId()).setName("My queue")
);
İş gönderme
Şimdi, çalışanın etiketi Some-Skill
10'dan büyük olmasını gerektiren bir çalışan seçicisi ile doğrudan bu kuyruğa bir iş gönderebiliriz.
RouterJob job = routerClient.createJob(new CreateJobOptions("job-1", "voice", queue.getId())
.setPriority(1)
.setRequestedWorkerSelectors(List.of(
new RouterWorkerSelector("Some-Skill", LabelOperator.GREATER_THAN, new RouterValue(10)))));
Çalışan oluşturma
Şimdi bu kuyruktan iş almak için 11'e eşit etikete Some-Skill
ve üzerinde my-channel
kapasiteye sahip bir çalışan oluşturuyoruz.
RouterWorker worker = routerClient.createWorker(
new CreateWorkerOptions("worker-1", 1)
.setQueues(List.of(queue.getId()))
.setLabels(Map.of("Some-Skill", new RouterValue(11)))
.setChannels(List.of(new RouterChannel("voice", 1))));
Teklif alma
Event Grid aboneliğimizden RouterWorkerOfferIssued almalıyız. Ancak birkaç saniye bekleyebilir ve ardından bir teklif yayımlanıp sunulmadığını görmek için çalışanı doğrudan JobRouter API'sine karşı sorgulayabiliriz.
Thread.sleep(10000);
worker = routerClient.getWorker(worker.getId());
for (RouterJobOffer offer : worker.getOffers()) {
System.out.printf("Worker %s has an active offer for job %s\n", worker.getId(), offer.getJobId());
}
İş teklifini kabul etme
Ardından çalışan, işi çalışana atayan SDK'yı kullanarak iş teklifini kabul edebilir.
AcceptJobOfferResult accept = routerClient.acceptJobOffer(worker.getId(), worker.getOffers().get(0).getOfferId());
System.out.printf("Worker %s is assigned job %s\n", worker.getId(), accept.getJobId());
İşi tamamlama
Çalışan işle ilişkili çalışmayı tamamladıktan sonra (örneğin, aramayı tamamladıktan) sonra işi tamamlarız.
routerClient.completeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), null);
System.out.printf("Worker %s has completed job %s\n", worker.getId(), accept.getJobId());
İşi kapatma
Çalışan yeni işleri almaya hazır olduğunda, çalışanın işi kapatması gerekir.
routerClient.closeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), null);
System.out.printf("Worker %s has closed job %s\n", worker.getId(), accept.getJobId());
İşi silme
İş kapatıldıktan sonra, bu örneği yeniden çalıştırırsak işi aynı kimlikle yeniden oluşturabilmek için işi silebiliriz
routerClient.deleteJob(accept.getJobId());
System.out.printf("Deleting job %s\n", accept.getJobId());
Kodu çalıştırma
Kodu çalıştırmak için dosyayı içeren pom.xml
dizine gidin ve programı derleyin.
mvn compile
Ardından paketi derleyin:
mvn package
Uygulamayı yürütme
mvn exec:java -Dexec.mainClass="com.communication.jobrouter.quickstart.App" -Dexec.cleanupDaemonThreads=false
Beklenen çıkış, tamamlanan her eylemi açıklar:
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Dekont
Uygulamayı birden çok kez çalıştırmak, her seferinde yeni bir İşin kuyruğa yerleştirilmesine neden olur. Bu, çalışana yukarıdaki kodu çalıştırdığınızda oluşturulandan başka bir İş teklif edilmesine neden olabilir. Bu, isteğinizi çarpıtabileceği için kuyruktaki İşleri her seferinde silmeyi göz önünde bulundurun. Kuyruk veya İş yönetimi için SDK belgelerine bakın.
Başvuru belgeleri
Java SDK başvurusundan veya REST API başvurusundan Azure İletişim Hizmetleri İş Yönlendiricisi'nin tüm özellikleri hakkında bilgi edinin.
Sonraki Adımlar
İş Yönlendiricisi Nasıl Yapılır öğreticilerini keşfedin