Docker alpine中编译和测试Go RocketMQ Client
Zeal_8421 · · 1591 次点击 · · 开始浏览为什么要做本次测试
rocketmq的go-client分为两种:
- native
- 优点
- 纯go实现
- 缺点
- 缺少功能
- 稳定性未达生产环境要求
- API接口不稳定,随时可能修改
- 优点
- cgo
- 优点
- 完善的功能
- 稳定性高
- 缺点
- 依赖cpp的库
- 优点
实验环境
基于docker, 使用 golang:alpine 镜像。
初始化容器
docker run --rm -it golang:alpine /bin/sh
安装相关的包:
apk update && apk add gcc g++ cmake automake autoconf libtool make linux-headers bzip2-dev zlib-dev
为了方便编辑和测试,需要安装以下包:
apk add git vim
编译 rocketmq-client-cpp 类库
下载rocketmq-client-cpp源码:
wget https://github.com/apache/rocketmq-client-cpp/archive/master.zip
unzip master.zip
进入源码根目录后,我们就可以开始编译了:
./build.sh
Tips: 如果编译过程中断,比如缺少依赖库,需要清理一下再重新build, 否则会一直失败
编译完成后需要将include和libs复制到相应系统目录,以便cgo编译时能找到相关头文件和依赖库,运行时能加载相关动态链接库:
mkdir -p /usr/local/include/rocketmq
cp include/* /usr/local/include/rocketmq
cp bin/librocketmq.* /usr/local/lib
测试
假设您有可用的
rocketmq服务端
拉取 rocketmq 的 go 客户端:
go get -v github.com/apache/rocketmq-client-go
cd /go/src/github.com/apache/rocketmq-client-go/examples
go get -v
由于examples中的nameserver地址是错误的,我们需要手动修改,
比如,我们的nameserver是11.22.33.44:9876
cd /go/src/github.com/apache/rocketmq-client-go/examples
sed -i 's/XXXXXXXXXXXXXXXXXX\:80/11.22.33.44\:9876/' *.go
ok, 我们可以开始跑样例代码了!
go run *.go
参考资料
启动 RocketMQ服务
编译 RocketMQ CPP Client
go rocketmq client 使用说明
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
为什么要做本次测试
rocketmq的go-client分为两种:
- native
- 优点
- 纯go实现
- 缺点
- 缺少功能
- 稳定性未达生产环境要求
- API接口不稳定,随时可能修改
- 优点
- cgo
- 优点
- 完善的功能
- 稳定性高
- 缺点
- 依赖cpp的库
- 优点
实验环境
基于docker, 使用 golang:alpine 镜像。
初始化容器
docker run --rm -it golang:alpine /bin/sh
安装相关的包:
apk update && apk add gcc g++ cmake automake autoconf libtool make linux-headers bzip2-dev zlib-dev
为了方便编辑和测试,需要安装以下包:
apk add git vim
编译 rocketmq-client-cpp 类库
下载rocketmq-client-cpp源码:
wget https://github.com/apache/rocketmq-client-cpp/archive/master.zip
unzip master.zip
进入源码根目录后,我们就可以开始编译了:
./build.sh
Tips: 如果编译过程中断,比如缺少依赖库,需要清理一下再重新build, 否则会一直失败
编译完成后需要将include和libs复制到相应系统目录,以便cgo编译时能找到相关头文件和依赖库,运行时能加载相关动态链接库:
mkdir -p /usr/local/include/rocketmq
cp include/* /usr/local/include/rocketmq
cp bin/librocketmq.* /usr/local/lib
测试
假设您有可用的
rocketmq服务端
拉取 rocketmq 的 go 客户端:
go get -v github.com/apache/rocketmq-client-go
cd /go/src/github.com/apache/rocketmq-client-go/examples
go get -v
由于examples中的nameserver地址是错误的,我们需要手动修改,
比如,我们的nameserver是11.22.33.44:9876
cd /go/src/github.com/apache/rocketmq-client-go/examples
sed -i 's/XXXXXXXXXXXXXXXXXX\:80/11.22.33.44\:9876/' *.go
ok, 我们可以开始跑样例代码了!
go run *.go
参考资料
启动 RocketMQ服务
编译 RocketMQ CPP Client
go rocketmq client 使用说明