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
- le module ngx_lua : https://github.com/openresty/lua-nginx-module/#readme
- la spécification du protocole câblé nsq : https://nsq.io/clients/tcp_protocol_spec.html
- le sémaphore dans openresty : ngx.sema
- le thread dans openresty : ngx.thread
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.