美文网首页
Docker alpine中编译和测试Go RocketMQ C

Docker alpine中编译和测试Go RocketMQ C

作者: Zeal_8421 | 来源:发表于2020-03-19 23:24 被阅读0次

    为什么要做本次测试

    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 C

          本文链接:https://www.haomeiwen.com/subject/aagryhtx.html