当前位置: 首页 > article >正文

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


http://www.kler.cn/news/326447.html

相关文章:

  • 深入理解EVM(以太坊虚拟机)及其工作原理,因为这将直接影响智能合约的开发。
  • 智融-SW6003 双向移动电源IC
  • P3131 [USACO16JAN] Subsequences Summing to Sevens S Python题解
  • idea使用技巧与插件推荐
  • 序列化方式五——ProtoStuff
  • JSON 教程
  • 什么Python库处理大量数据比较快?
  • Oracle 性能优化的高频面试题及答案
  • MySQL和Doris开窗函数LAG执行时的区别
  • PHP入门必看:从基础语法到实际应用,一文掌握Web开发的必备技能!
  • X-Spreadsheet:Web端Excel电子表格工具库
  • “AI+Security”系列第3期(五):AI技术在网络安全领域的本地化应用与挑战
  • 使用 Colly 在 Golang 中进行网页抓取的步骤
  • Rust Web自动化Demo
  • 《动手学深度学习》笔记2.4——神经网络从基础→进阶 (文件读写-保存参数和模型)
  • 堆的数组实现
  • nginx的安装和使用
  • 网页前端开发之Javascript入门篇(1/9):变量
  • 千益畅行,旅游创业新模式的创新与发展
  • 【Python报错已解决】ModuleNotFoundError: No module named ‘tensorflow‘
  • [每周一更]-(第117期):硬盘分区表类型:MBR和GPT区别
  • Windows开发工具使用技巧大揭秘:让编码效率翻倍的秘籍!
  • 软件设计之SSM(3)
  • SpringBoot中各种O的分层模型
  • 16 数组——18. 四数之和 ★★
  • 6种MySQL高可用方案对比分析
  • CleanMyMac X v4.12.1 中文破解版 Mac优化清理工具
  • 10个降低性能的SQL问题及改进措施
  • Leetcode面试经典150题-201.数字范围按位与
  • oracle 分表代码示例