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的微服务架构实践
什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选 ...
随机推荐
- vue-2-计算属性和观察者
<div id="example"> <p>Original message: "{{ message }}"</p> &l ...
- 2.5 C++类class和结构体struct区别
参考:http://www.weixueyuan.net/view/6337.html 总结: 在C++中,struct类似于class,在其中既可以定义数据成员,又可以定义成员函数. 在C++中,s ...
- SQL-34 对于表actor批量插入如下数据
题目描述 对于表actor批量插入如下数据CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,fir ...
- DevExpress ASP.NET v18.2新功能详解(四)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress ASP.NET Cont ...
- 代码改变世界 | 如何封装一个简单的 Koa
下面给大家带来:封装一个简单的 Koa Koa 是基于 Node.js 平台的下一代 web 开发框架 Koa 是一个新的 web 框架,可以快速而愉快地编写服务端应用程序,本文将跟大家一起学习:封装 ...
- Nginx web服务器
文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动高效传输文件的模式.sendfile可以让N ...
- centos6.6安装hadoop-2.5.0(六、各种node功能)
一.hadoop的YARN框架 hadoop的YARN职能就是将资源调度和任务调度分开 ResourceManager全局管理所有应用程序计算资源的分配,每一个job的ApplicationMaste ...
- ios手动添加数组字典(NSMutableDictionary)
@property (nonatomic,strong) NSArray *imageData;//定义一个数组 -(NSArray *)imageDate { if(_imageDate==nil) ...
- Day3作业及默写
1.有变量量name = "aleX leNb" 完成如下操作: 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip()) 移除 name 变 ...
- pyx文件 生成pyd 文件用于 cython调用
转于:https://www.2cto.com/kf/201405/304168.html 1. 初衷 最近学用python,python不愧是为程序员考虑的编程语言,写起来很快很方便,大大节省开发效 ...