一个例子
1.一个服务器负责生成天气相关数据(邮编、温度、湿度),然后将这些数据发布到所有需要知悉天气的客户端;
2.一个客户端需要时刻更新和获取最新的邮政编码,在没有获取之前可默认为纽约地区。
###特点:
1.一个发布者,多个订阅者的关系,1:n;
2.当发布者数据变化时发布数据,所有订阅者均能够接收到数据并处理。
这就是发布/订阅模式。
###特别提示
####1.使用SUB设置一个订阅时,必须使用zmq_setsockopt()对消息进行过滤,例如:
# python:
# Subscribe to zipcode, default is NYC, 10001
zip_filter = sys.argv[1] if len(sys.argv) > 1 else "10001"
# Python 2 - ascii bytes to unicode str
if isinstance(zip_filter, bytes):
zip_filter = zip_filter.decode('ascii')
socket.setsockopt_string(zmq.SUBSCRIBE, zip_filter)
// c++:
// Subscribe to zipcode, default is NYC, 10001
const char *filter = (argc > 1)? argv [1]: "10001 ";
subscriber.setsockopt(ZMQ_SUBSCRIBE, filter, strlen (filter));
另外值得注意的是:zmq_setsockopt()过滤是根据参数前缀进行过滤的。如下图所示: