ADDJOB

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 ; 否则命令返回错误。

disque> ADDJOB greeting "hello world!" 0            -- 将任务放进队列里面
DI216f7fa17693623ffb3bd8b0902e134f4ab6a5d305a0SQ    -- 任务 ID

disque> ADDJOB greeting "good morning!" 0
DI216f7fa16a8e4a7428b18c2b0ec180963795b0b705a0SQ

disque> ADDJOB greeting "bye bye~" 0
DI216f7fa11413878f376588c85aca7c7fa22232f905a0SQ