Aracılığıyla paylaş


İş Yönlendiricisi çalışan kapasitesi

Çalışanları yapılandırırken, bir çalışanın aynı anda çeşitli kanallardan kaç işi işleyebileceğini belirtmek için bir yol sağlamak istiyoruz. Bu yapılandırma, çalışanın toplam kapasitesi belirtilerek ve her kanal için iş başına bir maliyet atanarak gerçekleştirilebilir.

Örnek: Bir sesli işi veya beşe kadar sohbet işini işleyebilen çalışan

Bu örnekte, toplam kapasitesi 100 olan bir çalışan yapılandıracak ve ses kanalını iş başına 100 kapasite kullanacak şekilde, sohbet kanalını ise iş başına 20 kapasite kullanacak şekilde ayarlayacağız. Bu yapılandırma, çalışanın tek seferde bir sesli işi veya aynı anda en fazla beş sohbet işini işleyebileceği anlamına gelir. Çalışan bir veya daha fazla sohbet işini ele alıyorsa, bu sohbet işleri tamamlanana kadar çalışan herhangi bir ses işi alamaz. Çalışan bir sesli işi ele alıyorsa, ses işi tamamlanana kadar çalışan hiçbir sohbet işine giremez.

var worker = await client.CreateWorkerAsync(
    new CreateWorkerOptions(workerId: "worker1", capacity: 100)
    {
        Queues = { "queue1" },
        Channels =
        {
            new RouterChannel(channelId: "voice", capacityCostPerJob: 100),
            new RouterChannel(channelId: "chat", capacityCostPerJob: 20)
        }
    });
await client.path("/routing/workers/{workerId}", "worker1").patch({
    body: {
        capacity: 100,
        queues: ["queue1"],
        channels: [
            { channelId: "voice", capacityCostPerJob: 100 },
            { channelId: "chat", capacityCostPerJob: 20 },
        ]
    },
    contentType: "application/merge-patch+json"
});
client.upsert_worker(worker_id = "worker1",
    capacity = 100,
    queues = ["queue1"],
    channels = [
        RouterChannel(channel_id = "voice", capacity_cost_per_job = 100),
        RouterChannel(channel_id = "chat", capacity_cost_per_job = 20)
    ]
)
client.createWorker(new CreateWorkerOptions("worker1", 100)
    .setQueues(List.of("queue1"))
    .setChannels(List.of(
        new RouterChannel("voice", 100),
        new RouterChannel("chat", 20))));

Örnek: Bir sesli işi ve en çok iki sohbet işini ve iki e-posta işini aynı anda işleyebilen çalışan

Bu örnekte, bir çalışan toplam 100 kapasiteyle yapılandırılır. Daha sonra ses kanalı iş başına 60 kapasite kullanacak şekilde, sohbet ve e-posta kanalları ise her maxNumberOfJobs biri ikiye ayarlanmış iş başına 10 kapasite tüketecek şekilde ayarlanır. Bu yapılandırma, çalışanın bir kerede bir sesli işi ve aynı anda en çok iki sohbet işini ve en fazla iki e-posta işini işleyebileceği anlamına gelir. Sohbet ve e-posta kanalları iki taneyle maxNumberOfJobs yapılandırıldığından, bu kanallar toplamda en fazla 40 kapasite tüketir. Bu nedenle, çalışan her zaman en fazla bir sesli işi işleyebilir. Ses kanalı diğer kanallara göre "öncelik" alır.

var worker = await client.CreateWorkerAsync(
    new CreateWorkerOptions(workerId: "worker1", capacity: 100)
    {
        Queues = { "queue1" },
        Channels =
        {
            new RouterChannel(channelId: "voice", capacityCostPerJob: 60),
            new RouterChannel(channelId: "chat", capacityCostPerJob: 10) { MaxNumberOfJobs = 2},
            new RouterChannel(channelId: "email", capacityCostPerJob: 10) { MaxNumberOfJobs = 2}
        }
    });
await client.path("/routing/workers/{workerId}", "worker1").patch({
    body: {
        capacity: 100,
        queues: ["queue1"],
        channels: [
            { channelId: "voice", capacityCostPerJob: 60 },
            { channelId: "chat", capacityCostPerJob: 10, maxNumberOfJobs: 2 },
            { channelId: "email", capacityCostPerJob: 10, maxNumberOfJobs: 2 }
        ]
    },
    contentType: "application/merge-patch+json"
});
client.upsert_worker(worker_id = "worker1",
    capacity = 100,
    queues = ["queue1"],
    channels = [
        RouterChannel(channel_id = "voice", capacity_cost_per_job = 60),
        RouterChannel(channel_id = "chat", capacity_cost_per_job = 10, max_number_of_jobs = 2),
        RouterChannel(channel_id = "email", capacity_cost_per_job = 10, max_number_of_jobs = 2)
    ]
)
client.createWorker(new CreateWorkerOptions("worker1", 100)
    .setQueues(List.of("queue1"))
    .setChannels(List.of(
        new RouterChannel("voice", 60),
        new RouterChannel("chat", 10).setMaxNumberOfJobs(2),
        new RouterChannel("email", 10).setMaxNumberOfJobs(2))));

Sonraki adımlar