open-resty 服务安装kafka插件

从github下载

作者:程序那点事儿 日期:2023/11/16 22:01


lua-resty-kafka 插件安装

下载代码后直接解压

  1. mkdir -p /usr/local/openresty/modules/ #创建一个目录,存放lua插件
  2. cd /usr/local/openresty/modules/ #进入目录
  3. rz -y #上传lua插件lua-resty-kafka-master.zip
  4. unzip lua-resty-kafka-master.zip #解压后删除lua-resty-kafka-master.zip
  5. mv lua-resty-kafka-master kafka #名字太长了,重命名一下(可以忽略这一步)

编写一个案例测试

创建一个lua目录, 该目录下创建一个lua文件

  1. mkdir /usr/local/openresty/nginx/lua #创建一个lua目录,存放lua脚本

  2. cd /usr/local/openresty/nginx/lua #进入lua目录下

  3. vim items-access.lua #创建一个lua文件,内容如下

    复制代码
    --引入json解析库
    local cjson = require("cjson")
    --kafka依赖库
    --是基于nginx.conf文件的lua_package_path配置路径下引入lua文件
    local client = require "resty.kafka.client"
    local producer = require "resty.kafka.producer"
    --配置kafka的连接地址
    local broker_list = {
            {host = "192.168.10.104", port=9092},
            {host = "192.168.10.105", port=9092},
            {host = "192.168.10.106", port=9092}
    }
    --创建生产者
    local pro = producer:new(broker_list, {producer_type="async"})
    
    --获取ip
    local headers = ngx.req.get_headers()
    local ip = headers["X-REAL-IP"] or headers["X_FORWARDER_FOR"] or ngx.var.remote_addr or "0.0.0.0"
    
    --定义消息内统
    local logjson = {}
    logjson["uri"] = ngx.var.uri
    logjson["ip"] = ip
    logjson["token"] = "Bearer ITHEIMA"
    logjson["actime"] = os.date("%Y-%m-%d %H:%m:%S")
    
    --发送消息 
    local offset, err = pro:send("logitems", nil, cjson.encode(logjson))
    
    --页面跳转
    local uri = ngx.var.uri
    uri = string.gsub(uri, "/web", "")
    ngx.exec(uri)
  4. vim /usr/local/openresty/nginx/conf/nginx.conf #引入插件,注意"?"前面是"/"

    复制代码
        #lua插件位置
        lua_package_path "/usr/local/openresty/modules/kafka/lib/?.lua;;";
        server {
            listen       80;
            server_name  localhost;
    
    
            #/web开始的请求,做日志记录,然后跳转到下面的location
            location /web/items/ {
                content_by_lua_file /usr/local/openresty/nginx/lua/items-access.lua;
            }
        }
  5. 重启open-restry

    复制代码
    nginx -s reload
  6. 访问测试

    复制代码
    http://192.168.10.100/web/items/S1235433012779413504.html
相关推荐
数据智能老司机12 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机12 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
cg501713 小时前
Spring Boot 的配置文件
java·linux·spring boot
数据智能老司机13 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
IT成长日记13 小时前
【Kafka基础】Kafka工作原理解析
分布式·kafka
暮云星影13 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain14 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon14 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu14 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu