zeroMQ初体验-13.发布/订阅模式 进阶

本文介绍了使用ZeroMQ实现发布订阅模式的方法,并通过示例代码展示了如何将大数据分拆发送以避免内存溢出等问题,同时讲解了信封数据结构的应用。
前面章节有介绍过当传输大数据时,建议分拆成多个小数据逐个发送,以防单条数据过大引发内存溢出等问题。同样的,这也适用于 发布订阅模式,这里用到了一个新名词:信封。

这种封装的数据结构看起来是这样的:
[img]http://github.com/imatix/zguide/raw/master/images/fig27.png[/img]

由于key的关系,不用担心出现 被分拆为多份的数据只被对应订阅方部分持有 这种尴尬的局面。

发布端:

import time
import zmq

def main():
    
    context   = zmq.Context(1)
    publisher = context.socket(zmq.PUB)
    publisher.bind("tcp://*:5563")
    
    while True:
        publisher.send_multipart(["A", "We don't want to see this"])
        publisher.send_multipart(["B", "We would like to see this"])
        time.sleep(1)
    
    publisher.close()
    context.term()

if name == "main":
    main()


订阅端:

import zmq

def main():
    
    context    = zmq.Context(1)
    subscriber = context.socket(zmq.SUB)
    subscriber.connect("tcp://localhost:5563")
    subscriber.setsockopt(zmq.SUBSCRIBE, "B")
    
    while True:
        [address, contents] = subscriber.recv_multipart()
        print("[%s] %s\n" % (address, contents))
    
    subscriber.close()
    context.term()

if name == "main":
    main()


如果想要尝试下上一章节的命名制,对数据做些许变动即可:
[img]http://github.com/imatix/zguide/raw/master/images/fig28.png[/img]


(未完待续)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值