环境准备

Apache RocketMQ C++ 5.0系列SDK底层基于gRPC,本文为您介绍如何使用源码编译RocketMQ C++ Client。

前提条件

  • 安装GCC

    为了确保与gRPC保持相同的兼容性矩阵,编译环境需满足以下要求:

    • 编译最低需要C++ 11环境,对应GCC版本最低为4.8.5,推荐使用GCC 10.2以上的版本。

    • 可选通过宏支持C++ 17环境,对应GCC版本为7,可以通过-std=c++17-std=gnu++17开启。

  • 安装CMake

    需要安装3.13及以上版本。

  • 安装OpenSSL

    需要安装 1.1.1版本。

  • 安装Protobuf

    具体版本可根据项目需求选择。

操作步骤

  1. 安装gflagsgRPC依赖。

    • 编译安装gflags。

      wget -O gflags-2.2.2.tar.gz https://github.com/gflags/gflags/archive/v2.2.2.tar.gz
      tar -xvzf gflags-2.2.2.tar.gz
      cd gflags-2.2.2/
      mkdir build && cd build
      cmake -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DINSTALL_HEADERS=ON -DINSTALL_SHARED_LIBS=ON -DINSTALL_STATIC_LIBS=ON ..
      make
      make install
      cd
      
      # 注意 gflags 需要load lib
      cat >> ~/.bashrc << EOF
      export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/lib
      EOF
      source ~/.bashrc
    • 编译安装gRPC。推荐使用1.46.3版本的gRPC,更高版本的gRPCSDK存在兼容性问题。

      export MY_INSTALL_DIR=$HOME/grpc
      
      mkdir -p $MY_INSTALL_DIR
      
      # Add the local bin folder to your path variable, for example:
      export PATH="$MY_INSTALL_DIR/bin:$PATH"
      
      git clone --recurse-submodules \
          -b v1.46.3 --depth 1 --shallow-submodules \
          https://github.com/grpc/grpc
      
      cd grpc
      mkdir -p cmake/build
      pushd cmake/build
      cmake -DgRPC_INSTALL=ON \
          -DgRPC_BUILD_TESTS=OFF \
          -DCMAKE_INSTALL_PREFIX=$MY_INSTALL_DIR \
            ../..
      
      make -j 32
      make install
      popd
  2. 源码构建。RocketMQ C++ Client支持CMakeBazel两种构建方式,推荐使用CMake进行构建。本文以Apache RocketMQ C++ SDK 5.0.2版本为例进行说明。

    使用CMake构建(推荐)

    wget -O rocketmq-clients-cpp-5.0.2.tar.gz https://github.com/apache/rocketmq-clients/archive/refs/tags/cpp-5.0.2.tar.gz
    tar -xvzf rocketmq-clients-cpp-5.0.2.tar.gz
    cd rocketmq-clients-cpp-5.0.2/cpp
    mkdir build && cd build
    cmake ..
    make

    使用Bazel构建

    wget -O rocketmq-clients-cpp-5.0.2.tar.gz https://github.com/apache/rocketmq-clients/archive/refs/tags/cpp-5.0.2.tar.gz
    tar -xvzf rocketmq-clients-cpp-5.0.2.tar.gz
    cd rocketmq-clients-cpp-5.0.2/cpp
    bazel build //...
  3. 获取资源信息。

    示例代码中涉及的相关资源信息,包括实例接入点、Topic名称、Group ID等,需要在控制台提前创建。具体操作,请参见创建资源

  4. 按照步骤3中获取的资源信息修改示例代码中的相关参数,然后编译并运行示例代码