很简单使用了一个openresty 的lua 模块

环境准备

 
version: "3"
services:
  demo:
    image: artefactual/gearmand:latest 
    command: --queue-type=redis --redis-server=redis --redis-port=6379 --verbose=DEBUG
    ports:
    - "4731:4730"
  redis:
    image: redis
    ports:
    - "6379:6379"
  prometheus:
    image: prom/prometheus
    volumes:
    - "./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml"
    ports:
    - "9090:9090"
  app:
    image: appscode/gearmand:0.5.2
    command: run --v=3 --storage-dir=/my-dir --addr="0.0.0.0:4730"
    volumes:
    - "./db:/my-dir"
    ports:
    - "4730:4730"
    - "3000:3000"
  client:
    image: dalongrong/client-demo
    build:
     context: ./client
  worker:
    image: dalongrong/worker-demo
    build:
     context: ./worker
  nginx:
   build: 
     context: ./openresty
   ports:
   - "8080:80"
   volumes:
   - "./openresty/app/:/opt/app/"
   - "./openresty/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf"
  admin:
    image: dalongrong/admin-demo
    build:
     context: ./admin
 
 
  • nginx 配置
    openresty/nignx.conf
 
worker_processes 1;
user root;  
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    lua_code_cache off;
    gzip on;
    resolver 127.0.0.11;          
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
    lua_package_path '/opt/app/?.lua;;';
    server {
        listen 80;
        server_name localhost;
        charset utf-8;
        root html;
        default_type text/html;
        location / {
           default_type text/html;
           index index.html;
        }
        location /upper {
           default_type text/plain;
           content_by_lua_block {
              require("upper/init")();
           }
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}
 
 
  • resty.gearman lua 调用代码
local gearman = require "resty.gearman"
local gm = gearman:new()
function init()
    gm:set_timeout(1000) -- 1 sec
    local ok, err = gm:connect("app", 4730)
    if not ok then
        ngx.say("failed to connect: ", err)
          return
    end
    ok, err = gm:submit_job("ToUpper", "dalong demo")  
            -- submit_job,submit_job_bg,submit_job_high,submit_job_high_bg,submit_job_low,submit_job_low_bg are supported
            -- submit_job(function_name, workload[, unique])
    if not ok then
        ngx.say("failed to submit job: ", err)
            return
    else
        ngx.say(ok)
    end
    -- put it into the connection pool of size 100,
            -- with 0 idle timeout
    -- local ok, err = gm:set_keepalive(0, 100)
    -- if not ok then
    -- ngx.say("failed to set keepalive: ", err)
    -- return
    -- end
            -- or just close the connection right away:
    local ok, err = gm:close()
        if not ok then
          ngx.say("failed to close: ", err)
          return
        end
end
return init;
 
 
  • resty.gearman 模块配置
    使用dockerfile 指定的
 
FROM openresty/openresty:alpine-fat
LABEL author="1141591465@qq.com"
COPY app/lua-resty-gearman/lib/resty/gearman.lua /usr/local/openresty/lualib/resty/gearman.lua
 

启动&&测试

  • 启动
docker-compose up  -d
 
 
DALONG DEMO
 

说明

当前这个resty 库,只实现了client 的功能,但总的来说集成起来还是很强大的

参考资料

https://github.com/rongfengliang/gearmangolang-docker
https://github.com/zhhchen/lua-resty-gearman

gearman openresty 集成试用的更多相关文章

  1. pushpin Server-sent events && openresty 集成试用

    前边有写过一个简单pushpin 集成stream 的demo,这次测试下sse 的功能 备注: 环境依然使用的是docker-compose运行 环境准备 docker-compose 文件 ver ...

  2. pushpin openresty 集成试用

    pushpin 是一个很不错的将restapi 转换为reailtime api 的proxy,openresty 具有很强的nginx 控制能力 可以方便的用来进行api 的开发,默认其他语言pus ...

  3. openresty 集成 keycloak-oauth-oidc

    keycloak 是一个比较全,而且比较方便的sso 解决方案,同时为我们提供了灵活的扩展特性 备注: 测试使用docker-compose 运行,对于keycloak 使用pg 数据库做为后端存储 ...

  4. openresty 集成 sentry 异常系统

    sentry 是一个方便的错误异常追踪系统,同时社区也提供了openresty 的lua 包,使用docker-compose 进行测试 备注: sentry 部分的配置来自官方文档 环境准备 doc ...

  5. openresty 集成lua-resty-mail +smtp2http 扩展灵活的mail 服务

    lua-resty-mail 是一个不错的openresty mail 扩展,我们可以用来进行邮件发送,支持附件功能 smtp2http 是一个smtp 服务,可以将smtp 请求数据转换为http ...

  6. gogs wekan 集成试用

    wekan 官方提供了一个集成gogs 的扩展,不是完全的自动化,需要结合cli,但是官方的cli 写的...(不是很全) 备注: 测试环境使用docker-compose 环境准备 docker-c ...

  7. graphql elasticsearch 集成试用

    graphql 是很方便的api 查询语言,elasticsearch 可以方便的进行全文检索的应用开发 有一个方便的npm 包graphql-compose-elasticsearch 可以进行es ...

  8. benthos stream nats 集成试用

    测试demo 来自官方例子 使用docker-compose 进行运行 nats docker-compose file version: '3.3' services: nats: image: n ...

  9. 基于OpenResty和Node.js的微服务架构实践

    什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选 ...

随机推荐

  1. Bootstrap--思维导图

    Bootstrap--思维导图

  2. [Leetcode 55]跳格子JumpGame

    [题目] Given an array of non-negative integers, you are initially positioned at the first index of the ...

  3. sass进阶 @if @else if @else @for循环

    这种判断语句要配合混合宏来使用 定义下一混合宏 @mixin blockOrHidden($boolean:true) { @if $boolean { @debug "$boolean i ...

  4. :工厂模式2:抽象工厂模式--Pizza

    #ifndef __INGREDIENT_H__ #define __INGREDIENT_H__ #include <iostream> using namespace std; cla ...

  5. vivado对task和function的可综合支持

    手册UG901,对vivado可综合的语句支持进行了描述,HDL包括:verilog-2001,system-verilog,VHDL: verilog-2001扩展了对task和function的支 ...

  6. turtle

    画一组同切圆 输入 import turtle turtle.color('red') turtle.circle(30) turtle.circle(60) turtle.circle(90) tu ...

  7. IDEA中maven的依赖jar包报红

    问题描述: 查看本地的repository中有相关的jar包,但是在IDEA中就是报红(下面红色波浪线) 解决方法: 将pom.xml中相关的dependcy配置注释掉,maven中jar包就会删除. ...

  8. activemq spring 集成与测试

    1.下载安装activemq 2.pom依赖配置 3.spring配置 4.生产消息,消费消息(同步消费),监听消息(异步消费) 4.测试 5.参考博客 http://www.cnblogs.com/ ...

  9. UVALive - 6434 (贪心)

    题目链接:https://vjudge.net/problem/UVALive-6434 题意:给你n个数字,要你把这n个数字分成m组,每一组的消耗值定义为改组最大值和最小值之差,要求这m组的消耗值总 ...

  10. CodeForces - 631C (截取法)

    C. Report time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...