Skip to content

Latest commit

 

History

History
75 lines (55 loc) · 1.96 KB

README.md

File metadata and controls

75 lines (55 loc) · 1.96 KB

api-gateway-zmq-logger

Lua logger to send ZMQ messages using czmq lib, via Lua FFI.

Table of Contents

Status

This module is under active development and is considered production ready.

Dependencies

This library requires an nginx build, the ngx_lua module, LuaJIT 2.0, api-gateway-zmq-adaptor and czmq

Sample usage

    http {
        # lua_package_path should point to the location on the disk where the "scripts" folder is located
        lua_package_path "scripts/?.lua;/src/lua/api-gateway?.lua;;";

        #
        # initialize the zmqLogger for each worker process
        #
        init_worker_by_lua '
            ngx.apiGateway = ngx.apiGateway or {}

            local ZmqLogger = require "api-gateway.zmq.ZeroMQLogger"
            local zmq_publish_address = "ipc:///tmp/nginx_queue_listen"
            ngx.log(ngx.INFO, "Starting new ZmqLogger on pid [", tostring(ngx.worker.pid()), "] on address [", zmq_publish_address, "]")

            -- create a new ZMQ PUB socket
            local zmqLogger = ZmqLogger:new()
            zmqLogger:connect(ZmqLogger.SOCKET_TYPE.ZMQ_PUB, zmq_publish_address)

            ngx.apiGateway.zmqLogger = zmqLogger
         ';
    }

    server {

        location /sample-logging-location {
            ...
            log_by_lua '
                if ( ngx.apiGateway.logger.zmq ~= nil ) then
                    ngx.apiGateway.logger.zmq.log("hello-world")
                end
            ';
    }

Developer guide

Running the tests

With docker

make test-docker

This command spins up 2 containers ( Redis and API Gateway ) and executes the tests in test/perl