Docker alpine中编译和测试Go RocketMQ Client

Zeal_8421 · · 1064 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

为什么要做本次测试

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 使用说明


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Zeal_8421

查看原文:Docker alpine中编译和测试Go RocketMQ Client

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1064 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传