Capacidade de trabalho do Job Router
Ao configurar trabalhadores, queremos fornecer uma maneira de especificar quantos trabalhos um trabalhador pode lidar ao mesmo tempo a partir de vários canais. Essa configuração pode ser feita especificando a capacidade total do trabalhador e atribuindo um custo por trabalho para cada canal.
Exemplo: trabalhador que pode lidar com um trabalho de voz ou até cinco trabalhos de chat
Neste exemplo, configuramos um trabalhador com capacidade total de 100 e definimos o canal de voz para consumir 100 capacidade por trabalho e o canal de chat para consumir 20 capacidade por trabalho. Essa configuração significa que o trabalhador pode lidar com um trabalho de voz por vez ou até cinco trabalhos de bate-papo ao mesmo tempo. Se o trabalhador estiver lidando com um ou mais trabalhos de bate-papo, ele não poderá aceitar nenhum trabalho de voz até que esses trabalhos de bate-papo sejam concluídos. Se o trabalhador estiver lidando com um trabalho de voz, ele não poderá aceitar nenhum trabalho de bate-papo até que o trabalho de voz seja concluído.
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))));
Exemplo: trabalhador que pode lidar com um trabalho de voz e até dois trabalhos de chat e dois trabalhos de email ao mesmo tempo
Neste exemplo, um trabalhador é configurado com capacidade total de 100. Em seguida, o canal de voz é definido para consumir 60 capacidade por trabalho e os canais de chat e e-mail para consumir 10 capacidade por trabalho, cada um com um maxNumberOfJobs
conjunto para dois. Essa configuração significa que o trabalhador pode lidar com um trabalho de voz de cada vez e até dois trabalhos de bate-papo e até dois trabalhos de e-mail ao mesmo tempo. Como os canais de chat e e-mail são configurados com um de dois, esses canais consomem até um maxNumberOfJobs
máximo de 40 capacidade no total. Portanto, o trabalhador sempre pode lidar com até um trabalho de voz. O canal de voz tem "prioridade" sobre os outros canais.
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))));