ADDJOB
优质
小牛编辑
135浏览
2023-12-01
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