Capacità del ruolo di lavoro del router di processo
Quando si configurano i ruoli di lavoro, si vuole fornire un modo per specificare il numero di processi che un lavoratore può gestire alla volta da vari canali. Questa configurazione può essere eseguita specificando la capacità totale del ruolo di lavoro e assegnando un costo per ogni processo per ogni canale.
Esempio: ruolo di lavoro in grado di gestire un processo vocale o fino a cinque processi di chat
In questo esempio viene configurato un ruolo di lavoro con capacità totale pari a 100 e viene impostato il canale vocale per utilizzare 100 capacità per processo e il canale di chat per usare 20 capacità per processo. Questa configurazione significa che il ruolo di lavoro può gestire un processo vocale alla volta o fino a cinque processi di chat contemporaneamente. Se il ruolo di lavoro gestisce uno o più processi di chat, il lavoratore non può accettare alcun processo vocale finché tali processi di chat non vengono completati. Se il ruolo di lavoro gestisce un processo vocale, il lavoratore non può accettare alcun processo di chat fino al completamento del processo vocale.
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))));
Esempio: ruolo di lavoro in grado di gestire un processo vocale e fino a due processi di chat e due processi di posta elettronica contemporaneamente
In questo esempio, un ruolo di lavoro è configurato con capacità totale di 100. Successivamente, il canale vocale è impostato per utilizzare 60 capacità per processo e i canali di chat e posta elettronica per utilizzare 10 capacità per ogni processo con un maxNumberOfJobs
set su due. Questa configurazione significa che il ruolo di lavoro può gestire un processo vocale alla volta e fino a due processi di chat e fino a due processi di posta elettronica contemporaneamente. Poiché i canali di chat e di posta elettronica sono configurati con una maxNumberOfJobs
di due, questi canali utilizzano fino a un massimo di 40 capacità in totale. Pertanto, il ruolo di lavoro può sempre gestire fino a un processo vocale. Il canale vocale assume la "priorità" rispetto agli altri canali.
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))));