为什么要做本次测试
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 使用说明
有疑问加站长微信联系(非本文作者)