lua-resty-beanstalkd

=基于 cosocket API 的 ngx_lua Lua beastalkd 客户端驱动程序

$ opm get iresty/lua-resty-beanstalkd

名称

lua-resty-beanstalkd - ngx_lua 的非阻塞 beanstalkd 库。

状态

此库被认为是实验性的,并且仍在积极开发中。

API 仍在不断变化,可能会在未经通知的情况下更改。

描述

此库需要 nginx 和 ngx_lua 模块

概要

    lua_package_path "/path/to/lua-resty-beanstalkd/lib/?.lua;;";

    server {
        location /test {
            content_by_lua '

                local beanstalkd = require 'resty.beanstalkd'

                -- new and connect
                local bean, err = beanstalkd:new()
                if not bean then
                    ngx.say("failed to init beanstalkd:", err)
                    return
                end
                ngx.say("initialized ok")

                local ok, err = bean:connect()
                if not ok then
                    ngx.say("failed to connect beanstalkd:", err)
                    return
                end
                ngx.say("connect ok")

                -- use tube
                local ok, err = bean:use("smallfish")
                if not ok then
                    ngx.say("failed to use tube:", err)
                end
                ngx.say("use smallfish tube ok")

                -- put job
                local id, err = bean:put("hello")
                if not id then
                    ngx.say("failed to put hello to smallfish tube, error:", err)
                end
                ngx.say("put hello to smallfish tube, id:", id)

                -- watch tube
                local ok, err = bean:watch("smallfish")
                if not ok then
                    ngx.say("failed to watch tube smallfish, error:", err)
                    return
                end
                ngx.say("watch smallfish tube ok, tube size:", ok)

                -- reserve job,with optional timeout in seconds. reserve(timeout?)
                local id, data = bean:reserve()
                if not id then
                    ngx.say("reserve hello failed, error:", id, data)
                else
                    ngx.say("reserve hello ok, id:", id, "data:", data)
                end

                -- release job
                local ok, err = bean:release(id)
                if not ok then
                    ngx.say("failed to release, id:", id, " error:", err)
                else
                    ngx.say("release ok, id:", id)
                end

                local id, data = bean:reserve()
                if not id then
                    ngx.say("reserve hello failed, error:", id, data)
                else
                    ngx.say("reserve hello ok, id:", id, " data:", data)
                end

                -- peek job
                local id, data = bean:peek(id)
                if not id then
                    ngx.say("peek failed, id not found")
                else
                    ngx.say("peek ok, data:", data)
                end

                -- bury job
                local ok, err = bean:bury(id)
                if not ok then
                    ngx.say("bury failed, id:", id, " error:", err)
                else
                    ngx.say("bury ok, id:", id)
                end

                -- kick job
                local count, err = bean:kick(1)
                if not count then
                    ngx.say("kick failed, error:", err)
                else
                    ngx.say("kick ok, count:", count)
                end

                local id, data = bean:reserve()
                if not id then
                    ngx.say("reserve hello failed, error:", id, data)
                else
                    ngx.say("reserve hello ok, id:", id, " data:", data)
                end

                -- delete job
                local ok, err = bean:delete(id)
                if ok then
                    ngx.say("delete ok, id:", id)
                else
                    ngx.say("delete failed, id:", id, ok, err)
                end

                -- put it into the connection pool of size 100,
                -- with 0 idle timeout

                bean:set_keepalive(0, 100)

                -- close and quit beanstalkd
                -- bean:close()
           ';
        }
    }

作者

陈“小鱼”晓玉 <smallfish.xy@gmail.com>

版权和许可

此模块根据 BSD 许可证授权。

版权所有 (C) 2012,陈“小鱼”晓玉 <smallfish.xy@gmail.com>。

部分代码来自 lua-resty-memcached 版权所有 (C) 2012,张“agentzh”逸春 <agentzh@gmail.com>。

保留所有权利。

在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用此软件,无论是否修改。

  • 源代码的再分发必须保留上述版权声明、此条件列表以及以下免责声明。

  • 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表以及以下免责声明。

本软件由版权持有人和贡献者按“现状”提供,任何明示或暗示的保证,包括但不限于适销性和特定用途适用性的暗示保证,均被排除在外。在任何情况下,版权持有人或贡献者均不对任何直接的、间接的、附带的、特殊的、示例性的或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论其原因如何,以及无论是在合同、严格责任或侵权行为(包括疏忽或其他)的理论下,无论是否由使用本软件引起,即使已被告知此类损害的可能性。

另请参阅

作者

membphis

许可证

2bsd

版本