lua 通過 stomp協議發送消息到 rabbitmq

教程 shanhuhai 7718℃ 4評論

lua 發送消息到 rabbitmq, 我們選擇類庫lua-resty-rabbitmqstomp 來完成這個任務。

類庫安裝:

進入 nginx.conf 中 lua_package_path 中對應的目錄下的resty 目錄(沒有則創建) , 執行:
wget -c https://raw.githubusercontent.com/wingify/lua-resty-rabbitmqstomp/master/lib/resty/rabbitmqstomp.lua

示例代碼:


local rabbitmq = require "resty.rabbitmqstomp" local cjson = require "cjson" local opts = { host = '127.0.0.1', port = '5672', username = 'guest', password = 'guest', vhost = '/' } local mq, err = rabbitmq:new(opts) if not mq then ngx.say('cannot new mq') ngx.say(err) return end mq:set_timeout(10000) local ok, err = mq:connect(HOST, PORT) if not ok then ngx.say('cannot connect mq' .. err) return end local headers = {} -- 消息發送到哪里 /exchange/交換機名稱/routing_key名稱 headers["destination"] = "/exchange/ex1/ex1_key" -- 是否持久化 headers["persistent"] = "true" -- 消息格式 headers["content-type"] = "application/json" local ok, err = mq:send(cjson.encode(data), headers) if not ok then ngx.say('cannot send mq') return end -- 消息保持長連接,第一個參數表示連接超時時間,第二個參數是表示連接池大小 -- 由于 rabbitmq 連接建立比較耗時,所以保持連接池是非常必要的 local ok, err = mq:set_keepalive(10000, 500) if not ok then ngx.say(err) return end

注意: rabbitmq 的 stomp 協議支持默認是不開啟的,測試前需要手動開啟:

rabbitmq-plugins enable rabbitmq_stomp

另外與 lua 發送消息到 Rabbitmq 中使用 的類庫比,本文使用的方式性能更高,單機性能測試達到了5000 qps

轉載請注明:大后端 » lua 通過 stomp協議發送消息到 rabbitmq

喜歡 (4)or分享 (0)
發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
(4)個小伙伴在吐槽
  1. 你好,我將rabbitmq的屬性填入,但是 err總是返回closed
    allen2018-12-13 10:49 回復
  2. rabbitmq有很多模式,這個庫好像只有pub/sub?????
    goer2018-01-29 11:34 回復
    • 恩,我只用了訂閱發布,其他的你再試試吧
      shanhuhai2018-02-18 13:31 回復
春梓美 种子,av全裸挂历,日本女护士mm裸照写真,超碰地址发布页 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>