如何在Tarantool 1.6队列中获取剩余任务延迟时间

我正在尝试使用Tarantool fifottl队列将一些延迟任务存储在其中。

我必须使用以下接口来存储任务:

queue.tube.tube_name:put({ some_key, 'some_data' }, { delay = 80 })

如何在不改变任务状态的情况下检索当前任务延迟?

点赞
用户1277198
用户1277198

简要来说: 无法使用队列 API 完成这个任务。

长话短说: 这个队列的基本规则之一是:“如果任务没有被获取,那么没有人知道它的存在”,所以这个操作违反了这个规则。

一些不太好的方法: 你可以从 Tarantool 空间获得这些信息:

local states = require('queue.abstract.state')

local state, time = *queue-instance*.space:get{*TASK_ID*}:unpack(2, 3)}

if state == states.DELAYED then
    -- 任务已被延时,所以 `time` 是正确的时间
end
2016-04-19 12:46:26