ZeroMQ 是基于消息队列的多线程网络库,其对套接字类型、连续处理、帧甚至路由的底层细节抽象,提供跨域多种传输协议的套接字。
生命周期
1 创建上下文。ZMQ 的context上下文是线程安全,可以在多线程中使用,不需要主动为其加锁或解锁。
2 创建和销毁套接字。ZMQ套接字是在后台I/O操作的,无论是发送还是接受消息,它都会先传送到一个本地的缓存队列。
3 配置和读取套接字选项。ZMQ套接字不是线程安全的,在 bind 之前不能使用。
4 为套接字连接。常用的四种协议:机器间(tcp://)、进程间(ipc://)、进程内(inproce://)、广播(pgm://)。bind()连接的节点称之为服务器,有固定的地址,connect()连接的节点成为客户端,其地址一般不固定。
5 发送和接收信息。
ZMQ的核心消息模式
- 请求-应答模式,将一组服务端和一组客户端相连,用于远程过程调用或任务分发。(REQ-REP)
- 发布-订阅模式,将一组发布着和一组订阅者相连,用于数据分发。(PUB-SUB)
- 管道模式,使用PUSH或PULL的形式组装多个节点,可以产生步骤或循环。(PUSH-PULL)
实例(Python实现)
请求应答模式
请求-应答模式,将一组服务端和一组客户端相连,用于远程过程调用或任务分发。(REQ-REP)
基础实现

