gearman openresty 集成试用
很简单使用了一个openresty 的lua 模块
环境准备
- docker-compose 文件
详细配置可以参考 https://github.com/rongfengliang/gearmangolang-docker
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
- 效果
http://localhost:8080/upper
打开之后
DALONG DEMO
说明
当前这个resty 库,只实现了client 的功能,但总的来说集成起来还是很强大的
参考资料
https://github.com/rongfengliang/gearmangolang-docker
https://github.com/zhhchen/lua-resty-gearman
gearman openresty 集成试用的更多相关文章
- pushpin Server-sent events && openresty 集成试用
前边有写过一个简单pushpin 集成stream 的demo,这次测试下sse 的功能 备注: 环境依然使用的是docker-compose运行 环境准备 docker-compose 文件 ver ...
- pushpin openresty 集成试用
pushpin 是一个很不错的将restapi 转换为reailtime api 的proxy,openresty 具有很强的nginx 控制能力 可以方便的用来进行api 的开发,默认其他语言pus ...
- openresty 集成 keycloak-oauth-oidc
keycloak 是一个比较全,而且比较方便的sso 解决方案,同时为我们提供了灵活的扩展特性 备注: 测试使用docker-compose 运行,对于keycloak 使用pg 数据库做为后端存储 ...
- openresty 集成 sentry 异常系统
sentry 是一个方便的错误异常追踪系统,同时社区也提供了openresty 的lua 包,使用docker-compose 进行测试 备注: sentry 部分的配置来自官方文档 环境准备 doc ...
- openresty 集成lua-resty-mail +smtp2http 扩展灵活的mail 服务
lua-resty-mail 是一个不错的openresty mail 扩展,我们可以用来进行邮件发送,支持附件功能 smtp2http 是一个smtp 服务,可以将smtp 请求数据转换为http ...
- gogs wekan 集成试用
wekan 官方提供了一个集成gogs 的扩展,不是完全的自动化,需要结合cli,但是官方的cli 写的...(不是很全) 备注: 测试环境使用docker-compose 环境准备 docker-c ...
- graphql elasticsearch 集成试用
graphql 是很方便的api 查询语言,elasticsearch 可以方便的进行全文检索的应用开发 有一个方便的npm 包graphql-compose-elasticsearch 可以进行es ...
- benthos stream nats 集成试用
测试demo 来自官方例子 使用docker-compose 进行运行 nats docker-compose file version: '3.3' services: nats: image: n ...
- 基于OpenResty和Node.js的微服务架构实践
什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选 ...
随机推荐
- java IO实例
import java.io.*; /** * Created by CLY on 2017/7/23. */ public class Main { public static void main( ...
- 自定义ListView 、GradView 重写onMeasure方法让其正确显示
1 继承原始的 2 重写onMeasure方法 @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpe ...
- 牛客第三场多校 E Sort String
链接:https://www.nowcoder.com/acm/contest/141/E来源:牛客网 Eddy likes to play with string which is a sequen ...
- shell怎么判断两个文件内容是否相同
#cat diff_two_file#/bin/sbinfile1=/mnt/mmc/test/aafile2=/mnt/mmc/test/bbdiff $file1 $file2 > /dev ...
- 玩转 React【第02期】:恋上 React 模板 JSX
往期回顾 前文中我们讲解了利用 ReactElement 来编写React程序,但是我们也看到这种方式编写 React 特别的麻烦,而且层级结构特别不清晰.今天我们来看一种优雅的编写React的代码的 ...
- Delphi 10.3.1来了
10.3.1发布了,这个版本可以独自安装,是对Delphi 10.3 Rio,C ++ Builder 10.3 Rio和RAD Studio 10.3 Rio的更新.如果安装了2018年11月发布的 ...
- Wrapper
开放封闭原则: 开放对扩展 封闭修改源代码 改变了人家调用方式 装饰器结构 """ 默认结构为三层!!!每层返回下一层内存地址就可以进行执行函数, 传参:语法糖中的传参可 ...
- linux下开启oracle服务和开启监听
su - oracle 切换到oracle用户模式下 sqlplus /nolog //登录sqlplus SQL> connect /as sysdba //连接oracle SQL&g ...
- HDU 6095 17多校5 Rikka with Competition(思维简单题)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- HTTP Methods 和 RESTful Service API 设计
含义: HTTP Methods:也叫 HTTP Verbs,HTTP Methods 可以翻译成 HTTP 方法.它们是 HTTP 协议的一部分,主要规定了 HTTP 如何请求和操作服务器上的资源, ...