moorefu / rocketmq-client-lua

FFI-based RocketMQ-Client-CPP binding for LuaJIT.
Apache License 2.0
5 stars 2 forks source link

rocketmq-client-lua

RocketMQ Lua client, based on rocketmq-client-cpp, supports Linux and macOS

Prerequisites

Install librocketmq

rocketmq-client-lua is a lightweight wrapper around rocketmq-client-cpp, so you need install librocketmq first.

Download by binary release.

download specific release according you OS: rocketmq-client-cpp-2.0.0

Installation

luarocks install rocketmq-client-lua --server=https://luarocks.org/manifests/moorefu

Usage

Producer

local Producer = require("rocketmq").Producer
local Message = require("rocketmq").Message

local producer = Producer:new('PID-XXX')
producer:set_name_server_address('127.0.0.1:9876')
producer:start()

local msg = Message:new('YOUR-TOPIC')
msg:set_keys('XXX')
msg:set_tags('XXX')
msg:set_body('XXXX')
local ret = producer:send_sync(msg)
ngx.say(string.format("%s,%s,%s", tonumber(ret.sendStatus),ffi.string(ret.msgId),tonumber(ret.offset)))
producer:shutdown()

PushConsumer

local PushConsumer = require("rocketmq").PushConsumer
local ConsumeStatus = require("rocketmq").ConsumeStatus

local callback = function(msg)
    ngx.say(string.format("%s,%s", msg:id(),msg:body()))
    return ConsumeStatus.CONSUME_SUCCESS
end

local consumer = PushConsumer:new('CID_XXX')
consumer:set_name_server_address('127.0.0.1:9876')
consumer:subscribe('YOUR-TOPIC', callback,"*")
consumer:start()

consumer:shutdown()