齿轮工如何区分两份工作?

问题描述 投票:0回答:1

在我们的场景中,我们启动了多个gearman服务器,并使用多个线程为工作人员分配作业。在以下API函数中,unique参数的默认值为NULL

void *gearman_client_do(gearman_client_st *client, const char *function_name, const char *unique, const void *workload, size_t workload_size, size_t *result_size, gearman_return_t *ret_ptr);

所以我们在这里观察到的是,如果同时分配两个作业,那么齿轮机服务器会弄乱这两个。无论哪个工作早些时候完成,都将作为两个工作的结果返回。

这是真的吗,如果unique中的gearman_client_do()被分配给NULL,齿轮工将使用时间戳来区分不同的工作?

编辑:键入gearman_client_do

c++ c gearman
1个回答
0
投票

服务器可以使用唯一ID来减少队列长度。如果已提交具有相同唯一ID的作业,则服务器可以将此请求附加到现有作业。这包括正在进行的作业,在这种情况下,非后台作业将发送与后台作业相同的结果。这通常称为“聚结”。

gearman protocol描述了唯一的id处理。

这是真的吗,如果gearman_client_do()中的唯一赋值为NULL,齿轮手将使用时间戳来区分不同的作业?

时间戳是队列中作业顺序的问题。 gearmand将执行每个没有唯一ID的工作。另见implementation of gearman_client_do

© www.soinside.com 2019 - 2024. All rights reserved.