blob: 64863e99679dcb42c7a3d5578a6df254418b97bd [file] [log] [blame] [view]
----------
## RocketMQ Client Python
### 1. Python Runtime Version
* python 2.7.x
### 2. Dependency of Python Client
* CPP Core: [librocketmq](https://github.com/apache/rocketmq-client-cpp)
* python-devel 2.7.x
* boost-python 1.58.0
### 3. Build and Install
#### Linux Platform
* Install compile tools:
```
- sudo yum install make
- sudo yum install cmake
- sudo yum install gcc-c++
```
* Install dependency:
1. python-devel
```
sudo yum install python-devel
```
2. zlib-devel
```
sudo yum install zlib-devel
```
3. boost-python
```
sudo sh install_boostpython.sh
```
4. [librocketmq](https://github.com/apache/rocketmq-client-cpp), choose one method below:
- make and install the RocketMQ library manually from [rocketmq-client-cpp](https://github.com/apache/rocketmq-client-cpp)
- quick install, please choose the suitable dynamic library version for your system.
```
mkdir rocketmqlib
cd rocketmqlib
wget https://opensource-rocketmq-client.oss-cn-hangzhou.aliyuncs.com/cpp-client/linux/1.2.2/RHEL7.X/rocketmq-client-cpp.tar.gz
tar -xzf rocketmq-client-cpp.tar.gz
cd rocketmq-client-cpp
sudo cp lib/librocketmq.so lib/librocketmq.a /usr/local/lib/
mkdir -p /usr/local/include/rocketmq
sudo cp -r include/* /usr/local/include/rocketmq
```
* Make and install module manually
1. Using Dynamic RocketMQ and boost python libraries are recommended.
```
- mkdir build && cd build
- cmake ../ -DBoost_USE_STATIC_LIBS=OFF -DROCKETMQ_USE_STATIC_LIBS=OFF
- make
- make install
```
2. Also you can using static libraries.
```
- mkdir build & cd build
- cmake ../ -DBoost_USE_STATIC_LIBS=ON -DROCKETMQ_USE_STATIC_LIBS=ON
- make
- make install
```
* Check verion
```
strings librocketmqclientpython.so |grep PYTHON_CLIENT_VERSION
```
#### macOS Mojave 10.14.2
* Compile tools:
```
- make: 3.8
- cmake 3.12
- Apple LLVM(clang) 10
```
* Install dependency:
1. python-devel
2. zlib-devel
3. boost-python
```
sh install_boostpython.sh
```
4. [librocketmq](https://github.com/apache/rocketmq-client-cpp), choose one method below:
- make and install the RocketMQ library manually from [rocketmq-client-cpp](https://github.com/apache/rocketmq-client-cpp)
- quick install
```
mkdir rocketmqlib
cd rocketmqlib
wget https://opensource-rocketmq-client.oss-cn-hangzhou.aliyuncs.com/cpp-client/mac/1.2.0/librocketmq.tar.gz
tar -xzf librocketmq.tar.gz
cp librocketmq.dylib librocketmq.a /usr/local/lib/
cp -r rocketmq /usr/local/include/
```
* Make and install module manually
1. Using Dynamic RocketMQ and boost python libraries are recommended.
```
- mkdir build && cd build
- cmake ../ -DBoost_USE_STATIC_LIBS=OFF -DROCKETMQ_USE_STATIC_LIBS=OFF
- make
- make install
```
2. Also you can using static libraries.
```
- mkdir build & cd build
- cmake ../ -DBoost_USE_STATIC_LIBS=ON -DROCKETMQ_USE_STATIC_LIBS=ON
- make
- make install
```
* Check verion
```
strings librocketmqclientpython.so |grep PYTHON_CLIENT_VERSION
```
----------
## How to use
- set LD_LIBRARY_PATH
```
export LD_LIBRARY_PATH=/usr/local/lib
```
- import module
```
from librocketmqclientpython import *
```
- create message by following interface:
```
- msg = CreateMessage("your_topic.")
- SetMessageBody(msg, "this_message_body.")
- SetMessageKeys(msg, "this_message_keys.")
- SetMessageTags(msg, "this_message_tag.")
```
- producer must invoke following interface:
```
- producer = CreateProducer("please_rename_unique_group_name");
- SetProducerNameServerAddress(producer, "please_rename_unique_name_server")
- StartProducer(producer)
- SendMessageSync(producer, msg)
- ShutdownProducer(producer)
- DestroyProducer(producer)
```
- how to consumer messages
```
- def consumerMessage(msg, args):
- topic = GetMessageTopic(msg)
- body = GetMessageBody(msg)
- tags = GetMessageTags(msg)
- msgid = GetMessageId(msg)
- # handle message...
- return 0
```
- pushconsumer must invoke following interface:
```
- consumer = CreatePushConsumer("please_rename_unique_group_name_1");
- SetPushConsumerNameServerAddress(consumer, "please_rename_unique_name_server")
- Subscribe(consumer, "your_topic", "*")
- RegisterMessageCallback(consumer, consumerMessage, args)
- StartPushConsumer(consumer)
- ShutdownPushConsumer(consumer)
- DestroyPushConsumer(consumer)
```
----------
## Demo
- sync producer
- python testProducer.py
- push consumer
- python testConsumer.py