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

时间:2016-04-19 11:06:26

标签: lua queue tarantool

我正在尝试使用tarantool fifottl队列来存储一些延迟的任务。

我必须使用以下界面来存储任务:

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

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

1 个答案:

答案 0 :(得分:1)

简言之: 使用Queue 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
    -- task is delayed, so time in `time` is the right time
end