Перейти к содержанию

nsq: Lua клиентский драйвер nsq для nginx-module-lua на основе API cosocket

Установка

Если вы еще не подписались на репозиторий RPM, зарегистрируйтесь. Затем вы можете продолжить с следующими шагами.

CentOS/RHEL 7 или Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-nsq

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-nsq

Чтобы использовать эту Lua библиотеку с NGINX, убедитесь, что nginx-module-lua установлен.

Этот документ описывает lua-resty-nsq v0.1, выпущенную 7 августа 2018 года.


Эта Lua библиотека является клиентским драйвером NSQ для модуля ngx_lua nginx:

Эта Lua библиотека использует API cosocket ngx_lua, который обеспечивает 100% неблокирующее поведение.

Синопсис

    server {
        location /test {
            content_by_lua_block {
                local config = {
                    read_timeout = 3,
                    heartbeat = 1,
                }
                local producer = require "resty.nsq.producer"
                local consumer = require "resty.nsq.consumer"

                local cons = consumer:new()
                local prod = producer:new()

                local ok, err = cons:connect("127.0.0.1", 4150, config)
                if not ok then
                    ngx.say("failed to connect: ", err)
                    return
                end

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

                ok, err = prod:pub("new_topic", "hellow world!")
                if not ok then
                    ngx.say("failed to pub: ", err)
                    return
                end

                ok, err = prod:close()
                if not ok then
                    ngx.say("failed to close: ", err)
                    return
                end

                ok, err = cons:sub("new_topic", "new_channel")
                if not ok then
                    ngx.say("failed to sub: ", err)
                    return
                end

                local function read(c)
                    c:rdy(10)
                    local ret = cons:message()
                    ngx.say("sub success: ", require("cjson").encode(ret))
                end

                local co = ngx.thread.spawn(read, cons) -- read message in new thread
                ngx.thread.wait(co)

                ok, err = cons:close()
                if not ok then
                    ngx.say("failed to close: ", err)
                    return
                end
            }
        }
    }

Модули

resty.nsq.producer

Методы

new

pub

resty.nsq.consumer

Методы

new

См. также

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-nsq.