Python SDK

构建 TubeMQ Python SDK

Python SDK 主要基于 pybind11,对 C++ SDK 进行封装,因此在构建 Python SDK 之前,需要先构建好 C++ SDK,C++ SDK 的构建过程参考 构建TubeMQ C++ SDK

之后将 C++ SDK 的库文件和源文件安装到对应的位置

  1. # 拷贝头文件
  2. cp -r /tubemq-cpp/include/tubemq /usr/local/include
  3. # 拷贝三方依赖,以及libtubemq.a
  4. cp /tubemq-cpp/build/src/libtubemq.a \
  5. /tubemq-cpp/build/proto/libtubemq_proto.a \
  6. /tubemq-cpp/build/third_party/lib/lib* \
  7. /usr/local/lib64/

之后安装 Python3,以及相应的依赖,最后安装 Python SDK

  1. # 安装依赖
  2. pip3 install -r requirements.txt
  3. # 安装 python sdk
  4. python3 setup.py install

安装后,在 build/lib 中可以发现编译好的 so 文件以及 Python 库,直接添加到 Python的 site-packages 或者环境变量 PYTHONPATH 中均可。

Python SDK API

与 C++ SDK 类似,Python SDK 也分为 Producer 和 Consumer 两部分,下面对其进行介绍。

Producer

首先初始化 tubemq.Producer 实例

  1. import tubemq
  2. master_addr = "127.0.0.1:8000"
  3. producer = tubemq.Producer(master_addr)

之后订阅想要发送消息的 topic 列表。

  1. topic_list = ["topic_0", "topic_1"]
  2. producer.publish(topic_list)

订阅完成后,直接构造 tubemq.Message 并发送消息即可

  1. send_data = "hello_tubemq"
  2. topic_name = "demo"
  3. msg = tubemq_message.Message(topic_name, send_data, len(send_data))
  4. if is_sync:
  5. result = producer.send(msg, is_sync=True)
  6. else:
  7. producer.send(msg, callback=func) # 默认为异步发送

Python SDK 也为同步和异步两种发送方式,和 C++ SDK 的 API 类似,异步发送时,需要提供可调用的对象

最后,停止 producer 即可

  1. producer.stop()

Consumer

Python SDK 的 Consumer API 与 Producer 基本相似,下面为一个简单的例子

  1. import tubemq
  2. master_addr = "127.0.0.1:8000"
  3. topic_list = ["demo"]
  4. group_name = "test_group"
  5. consumer = tubemq.Consumer(master_addr, group_name, topic_list) # 初始化 consumer
  6. msgs = consumer.receive()
  7. if msgs:
  8. consumer.acknowledge()
  9. consumer.stop()

Example

关于 Python SDK 的更加详细的用例,可以参考 Python SDK Example