Docker alpine中编译和测试Go RocketMQ Client

为什么要做本次测试

rocketmqgo-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, 否则会一直失败

编译完成后需要将includelibs复制到相应系统目录,以便cgo编译时能找到相关头文件和依赖库,运行时能加载相关动态链接库:

mkdir -p /usr/local/include/rocketmq
cp include/* /usr/local/include/rocketmq
cp bin/librocketmq.* /usr/local/lib

测试

假设您有可用的rocketmq服务端

拉取 rocketmqgo 客户端:

go get -v github.com/apache/rocketmq-client-go
cd /go/src/github.com/apache/rocketmq-client-go/examples
go get -v

由于examples中的nameserver地址是错误的,我们需要手动修改,

比如,我们的nameserver11.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 使用说明

你可能感兴趣的:(Docker alpine中编译和测试Go RocketMQ Client)