nsq: Lua nsq-Clienttreiber für nginx-module-lua basierend auf der Cosocket-API
Installation
Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder 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
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-nsq v0.1, veröffentlicht am 07. August 2018.
Diese Lua-Bibliothek ist ein NSQ-Clienttreiber für das ngx_lua NGINX-Modul:
Diese Lua-Bibliothek nutzt die Cosocket-API von ngx_lua, die ein 100% nicht blockierendes Verhalten gewährleistet.
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("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
}
}
}
Module
resty.nsq.producer
Methoden
new
pub
resty.nsq.consumer
Methoden
new
Siehe auch
- das ngx_lua-Modul: https://github.com/openresty/lua-nginx-module/#readme
- die NSQ-verdrahtete Protokollspezifikation: https://nsq.io/clients/tcp_protocol_spec.html
- das Semaphore in OpenResty: ngx.sema
- der Thread in OpenResty: ngx.thread
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-nsq.