apisix 插件实现定时任务
程序员文章站
2022-06-03 20:23:43
...
本文档为个人博客文档系统的备份版本、作者:小游、作者博客:点击访问
local ngx = ngx
local count = 1
local delay = 1
local handler
-- 插件源数据配置
local schema = {
-- 类型
type = "object",
-- 插件接收的配置参数
properties = {
},
minProperties = 1,
-- 附加属性
additionalProperties = false,
}
-- 插件名
local plugin_name = "xiaoyou"
-- 插件的配置信息
local _M = {
-- 版本
version = 0.1,
-- 优先级
priority = 2500,
-- 插件的类型
type = 'auth',
-- 插件名字
name = plugin_name,
-- 插件的参数
schema = schema,
}
-- 定时任务处理函数
handler = function (premature)
if premature then
return
end
-- 定时任务的处理逻辑
count = count +1
local ok, err = ngx.timer.at(delay, handler)
-- 重新创建定时任务
-- ngx.timer.at 创建的回调是一次性的。如果要实现“定期”运行,需要在回调函数中重新创建 timer 才行。
if not ok then
ngx.log(ngx.ERR, "failed to create the timer: ", err)
return
end
end
-- 我们创建一个回调函数
local ok, err = ngx.timer.at(delay, handler)
if not ok then
ngx.log(ngx.ERR, "failed to create the timer: ", err)
return
end
-- 在balancer阶段来处理请求
-- 常见的阶段:init, rewrite,access,balancer,header filer,body filter 和 log 阶段
function _M.access(conf, ctx)
-- 返回请求结果
ngx.say(count)
end
-- 返回插件对象
return _M
上一篇: 内酯豆腐做法以及吃豆腐的好处