好文:
ZMQ可以基于TCP协议,也可以不基于TCP协议.
https://www.cnblogs.com/zengzy/p/5122634.html
在ZeroMQ中并没有绝对的服务端与客户端之分,所有的数据接收与发送都是以连接为单位的,只区分ZeroMQ定义的类型,例如Response与Request,Publisher与Subscriber,Push与Pull等。。。
https://blog.csdn.net/fjslovejhl/article/details/16862817
函数zmq_socket()根据context参数创建一个ZMQ套接字(socket),并且以一个不透明指针的形式返回这新创建的socket。type参数指明了要创建的socket的类型,这个类型决定了在进行传输时在此socket上执行的语义。
新创建的socket初始值是未绑定的,并且未和任何终结点相联系。为了能够在一个socket上建立消息,必须先要使用zmq_connect(3)连接上一个终结点,或者至少有使用zmq_bind(3)函数绑定一个终结点来接收传入的消息。
https://www.cnblogs.com/fengbohello/p/4354989.html
# Zeromq的几种模式比较
* **REQ-REP:** 请求-应答型,同步,TCP,1对n(服务器),n对1(服务器).
* **PUB-SUB:** 发布-订阅,经典模式适用于单向的数据发布,更新流既没有起点也没有终点,类似于广播,异步,UDP,1对n(服务器)
* **PULL-PUSH:** 推拉模式,TCP,异步,1对n(服务器) (bind端绑定ip和port, 另一端去连接这个ip和port)
* **ROUTER-REQ-DEALER:** 请求应答型,同步,tcp,添加代理可以n(client)对m(server),分配身份。
原文:https://blog.csdn.net/qq_30264689/article/details/80999025
这种模式与pub/sub模式一样都是单向的,区别有两点:
1,该模式下在没有消费者的情况下,发布者的信息是不会消耗的(由发布者进程维护)
2,多个消费者消费的是同一列信息,假设A得到了一条信息,则B将不再得到
这种模式主要针对在消费者能力不够的情况下,提供的多消费者并行消费解决方案(也算是之前的pub/sub模式的那个"堵塞问题"的一个解决策略吧)
https://blog.csdn.net/iteye_14316/article/details/82037243