1. 前言
基于上一篇文章对EII Message Bus原理的介绍,本文我们继续来聊聊EII Message Bus编程。另外我们也介绍一下,在EII的容器网络之外(如Host系统之上,或者非EII功能模块中),如何使用EII Message Bus和EII模块实现通讯。
在EII Message Bus的Samples案例中,例如发布程序"Samples/publisher/python/publisher.py"和订阅程序"Samples/subscriber/python/subscriber.py",其中既包含了对EII ConfigMgr API(负责从ETCD数据库读取模块的配置信息)的使用,又包含了对EII Message Bus API的使用。
这里我们将EII Message Bus的使用单独提取出来,来学习一下EII Message Bus API的使用。
2. 修改发布和订阅程序
- 首先,我们将"publisher.py"脚本改写成如下内容:
import time
import eii.msgbus as mb
import os
import random
def start_publisher():
publisher = None
try:
msgbus_cfg = {
'type': 'zmq_tcp',
'zmq_tcp_publish': {
'host': '0.0.0.0',
'port': 65021
}
}
topic = 'camera1_stream_results'
loop_interval = 1
print('[INFO] Initializing message bus context')
msgbus_pub = mb.MsgbusContext(msgbus_cfg)
publisher = msgbus_pub.new_publisher(topic)
print('[INFO] Running...')