详解Gearman Job中的Unique

PHP GearmanClient

  • GearmanClient客户端库会自动生成Unique,因此即使完全相同的请求内容,Job Server也会接收处理,比如下面两个客户端的调用,那么test队列中的任务数为2

    
    # 测试时先停止worker中函数test的处理
    
    client1->do("test", "test");
    client2->do("test", "test");
  • 如果,完全相同的请求,要求Job Server只处理一次,那么可以显示的带上Unique,比如下面两个客户端的调用,这种情况,test2队列中只会有一个任务(即使请求内容不同),但是当这个job被worker成功处理后,client1和client2都会接收到正确的处理结果

    
    # 测试时先停止worker中函数test2的处理
    
    client1->do("test2", "test", "unique");
    client2->do("test2", "test", "unique");
    client3->do("test2", "testtest", "unique");

Gearman Http Call

  • 关于Gearman Http调用方式请参见: http://blog.csdn.net/jiao_fuyou/article/details/38082853
  • http是通用协议,因此默认是不会有Unique这个东西,因此同样是上面两次test的调用,test队列中只会有一个任务,如果请求内容不同则会有两个任务

    
    # 请求内容相同
    
    session1# curl -XGET http://localhost:4830/test?test
    session2# curl -XGET http://localhost:4830/test?test
    
    
    # 请求内容不同
    
    session1# curl -XGET http://localhost:4830/test?test
    session2# curl -XGET http://localhost:4830/test?testtest
  • 如果想显示的区分不同的任务,可以在http header中加上:

    X-Gearman-Unique: your_unique_id

    这样,不管请求内容是否相同,只要header中的unique值不同,则任务是两个请求,否则就认为是一个请求
    同样,即使job server对相同unique的任务当做一个任务处理,当任务被成功处理后,两个客户端同样都会收到正确的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值