Aller au contenu

nsq: pilote client Lua nsq pour nginx-module-lua basé sur l'API cosocket

Installation

Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.

CentOS/RHEL 7 ou 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

Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.

Ce document décrit lua-resty-nsq v0.1 publié le 07 août 2018.


Cette bibliothèque Lua est un pilote client NSQ pour le module ngx_lua de nginx :

Cette bibliothèque Lua tire parti de l'API cosocket de ngx_lua, qui garantit un comportement 100 % non-bloquant.

Synopsis

    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("échec de la connexion : ", err)
                    return
                end

                local ok, err = prod:connect("127.0.0.1", 4150)
                if not ok then
                    ngx.say("échec de la connexion : ", err)
                    return
                end

                ok, err = prod:pub("new_topic", "hellow world!")
                if not ok then
                    ngx.say("échec de la publication : ", err)
                    return
                end

                ok, err = prod:close()
                if not ok then
                    ngx.say("échec de la fermeture : ", err)
                    return
                end

                ok, err = cons:sub("new_topic", "new_channel")
                if not ok then
                    ngx.say("échec de l'abonnement : ", err)
                    return
                end

                local function read(c)
                    c:rdy(10)
                    local ret = cons:message()
                    ngx.say("abonnement réussi : ", require("cjson").encode(ret))
                end

                local co = ngx.thread.spawn(read, cons) -- lire le message dans un nouveau thread
                ngx.thread.wait(co)

                ok, err = cons:close()
                if not ok then
                    ngx.say("échec de la fermeture : ", err)
                    return
                end
            }
        }
    }

Modules

resty.nsq.producer

Méthodes

new

pub

resty.nsq.consumer

Méthodes

new

Voir aussi

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-nsq.