Skip to content

luyuancpp/rocketmq-client-cpp-windows

 
 

Repository files navigation

RocketMQ-Client-CPP

RocketMQ-Client-CPP is the C/C++ client of Apache RocketMQ which is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.

Features

  • produce message, include sync and asynce produce message, timed and delay message.

  • consume message, include concurrency and orderly consume message, broadcast and cluster consume model.

  • rebalance, include both produce message and consume message with rebalance.

  • C and C++ API, include both C style and C++ style apis.

  • across platform, all features are supported on both windows and linux system.

  • low latency, publish latency < 2ms, subscribe latency < 10ms

  • high tps, rocketmq topic with 16 message queues, stand-alone cpp client can reach publish TPS > 3w and subsricbe TPS > 15w.

  • reliability, based on nameServer snapshot and network disaster recovery strategy, no real-time impact on publish and subscribe when anyone of broker or nameSrv was broken.

Dependency

Documentation

doc/rocketmq-cpp_manaual_zh.docx

Build and Install

Linux platform

note: make sure the following compile tools or libraries with them minimum version number have been installed before run the build script build.sh

  • compile tools:

    • gcc-c++ 4.8.2: jsoncpp,boost rocket-client require it, need support C++11
    • cmake 2.8.0: jsoncpp,rocketmq-client require it
    • automake 1.11.1: libevent require it
    • libtool 2.2.6: libevent require it
  • libraries:

    • bzip2-devel 1.0.6: boost dependcy it

one key build script will automatic build the dependency libraries include libevent json and boost, then it will build rocketmq-client static and shared library.

if can't get internet to download three library source files by build script, you can copy three library source files (release-2.0.22-stable.zip 0.10.6.zip and boost_1_56_0.tar.gz) to rocketmq-client root dir, then build.sh will auto use these library files to build rocketmq-client.

sudo sh build.sh

then there are librocketmq.a and librocketmq.so in /usr/local/lib. for use them to build application you should link with following libraries: -lrocketmq -lpthread -lz -ldl -lrt.

g++ -o consumer_example consumer_example.cpp -L. -lrocketmq -lpthread -lz -ldl -lrt

Windows platform:

note: make sure the following compile tools or libraries with them minimum version number have been installed before run the build script win32_build.bat

  • compile tools:
    • vs2015: libevent,jsoncpp,zlib,boost rocket-client require it
    • git: download source code

one key build script will automatic download dependency libraries include libevent json and boost, execute follow command,then it will build shared library.

win32_build.bat

if can't get internet to download four library source files by build script, you can copy four library source files

zlib-1.2.3-src Extract to $(rocketmq-client root dir)/thirdparty/zlib-1.2.3-src

libevent-release-2.0.22 Extract to $(rocketmq-client root dir)/thirdparty/libevent-release-2.0.22

boost_1_58_0 Extract to $(rocketmq-client root dir)/thirdparty/boost_1_58_0

jsoncpp-0.10.6 Extract to $(rocketmq-client root dir)/thirdparty/jsoncpp-0.10.6

then execute follow command will auto use these library files to build rocketmq-client.

win32_build.bat build

Quick Start

tools and commands

  • sync produce message
./SyncProducer -g group1 -t topic1 -c test message -n 172.168.1.1:9876
  • async produce message
./AsyncProducer -g group1 -t topic -c test message -n 172.168.1.1:9876
  • send delay message
./SendDelayMsg -g group1 -t topic -c test message -n 172.168.1.1:9876
  • sync push consume message
./PushConsumer -g group1 -t topic -c test message -s sync -n 172.168.1.1:9876 
  • async push comsume message
./AsyncPushConsumer -g group1 -t topic -c test message -n 172.168.1.1:9876
  • orderly sync push consume message
./OrderlyPushConsumer -g group1 -t topic -c test message -s sync -n 172.168.1.1:9876
  • orderly async push consume message
./OrderlyPushConsumer -g group1 -t topic -c test message -n 172.168.1.1:9876
  • sync pull consume message
./PullConsumer -g group1 -t topic -c test message -n 172.168.1.1:9876

Parameters for tools

-n	: nameserver addr, format is ip1:port;ip2:port
-i	: nameserver domain name, parameter -n and -i must have one.
-g	: groupName, contains producer groupName and consumer groupName
-t	: message topic
-m	: message count(default value:1)
-c	: message content(default value: only test)
-b	: consume model(default value: CLUSTER)
-a	: set sync push(default value: async)
-r	: setup retry times(default value:5 times)
-u	: select active broker to send message(default value: false)
-d	: use AutoDeleteSendcallback by cpp client(defalut value: false)
-T	: thread count of send msg or consume message(defalut value: system cpu core number)
-v	: print more details information

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 73.4%
  • Makefile 14.3%
  • C 10.0%
  • CMake 1.9%
  • Other 0.4%