ADDJOB

  1. ADDJOB queue_name job <ms-timeout> [REPLICATE <count>] [DELAY <sec>] [RETRY <sec>] [TTL <sec>] [MAXLEN <count>] [ASYNC]

将一个新任务添加到指定的队列里面。

以下是各个参数的含义:

  • queue_name :队列的名字,可以是任意字符串。如果指定的队列并不存在,那么它将被自动创建,用户无需手动创建队列。当队列没有任务可传递时,它也会自动被释放。
  • job :使用字符串描述的任务。Disque 不关心任务的具体含义,对于它来说,一项任务就是一条待传送的消息。
  • ms-timeout :毫秒精度的命令超时限制。如果用户没有使用 ASYNC 选项,并且在指定的毫秒数之内,任务的复制级别(replication level)未能达到指定的要求,那么命令将返回一个错误,而节点会尽可能地清理未发出的消息,并将遍布于整个集群的消息副本删除,但是任务仍然有可能会在之后被传递。在默认的服务器频率(hz)下,实际的超时解析度为 1/10 秒钟。
  • REPLICATE count :指定任务需要复制至多少个节点。
  • DELAY sec :指定任务在放入各个节点的队列之前,需要等待多少秒钟。
  • RETRY sec :在未接到 ACK 回复的情况下,节点在多少秒钟之后才会重新将任务放入待传递的队列里面。如果 sec 参数的值为 0 ,那么任务将以“最多一次”(at-most-once)的方式进行传递:这个任务不会被重新放入到待传递队列里面,并且它的复制因子(replication factor)也只会为 1 。
  • TTL sec :秒级精度的任务生存时间。在生存时间消耗完毕之后,即使任务还未被成功传递,它也会被删除。
  • MAXLEN count :指定队列最多可以存放多少个待传递的任务。在队列已满的情况下,尝试添加新任务将被拒绝,而客户端也会接收到一个错误。
  • ASYNC :要求服务器让命令尽快返回,并在后台执行将任务复制至其他节点的工作。任务会尽快地被放入到队列里面,而在普通情况下,只有当任务已经被放入到队列里面的时候,客户端才会接收到正面的回复。
    当用户指定了 ASYNC 选项,或者任务已经被正确地复制到了指定数量的节点上面时,命令返回已入队任务的 ID ;否则命令返回错误。
  1. disque> ADDJOB greeting "hello world!" 0 -- 将任务放进队列里面
  2. DI216f7fa17693623ffb3bd8b0902e134f4ab6a5d305a0SQ -- 任务 ID
  3.  
  4. disque> ADDJOB greeting "good morning!" 0
  5. DI216f7fa16a8e4a7428b18c2b0ec180963795b0b705a0SQ
  6.  
  7. disque> ADDJOB greeting "bye bye~" 0
  8. DI216f7fa11413878f376588c85aca7c7fa22232f905a0SQ