首页 > 其他 > 详细

zeromq 笔记

时间:2014-06-29 06:00:01      阅读:498      评论:0      收藏:0      [点我收藏+]

1.信封机制在ROUTER中的工作原理:

  • 从ROUTER中读取一条消息时(recv_multipart()),ØMQ会包上一层信封,上面注明了消息的来源。
  • 让ROUTER发送一条消息时(包含信封)send_multipart([ident, msg]),ØMQ会将信封拆开,并将消息递送给相应的对象。

2.当你用REQ套接字去连接ROUTER套接字,并发送一条请求消息,你会从ROUTER中获得一条如下所示的消息:

bubuko.com,布布扣

  • 第三帧是应用程序发送给REQ套接字的消息;
  • 第二帧的空信息是REQ套接字在发送消息给ROUTER之前添加的;
  • 第一帧即信封,是由ROUTER套接字添加的,记录了消息的来源。

3.REQ发送消息时会在消息顶部插入一个空帧,接受时会将空帧移去。其实REQ是建立在DEALER之上的,但REQ只有当消息发送并接受到回应后才能继续运行。

4.ROUTER在收到消息时会在顶部添加一个信封,其实就是添加了一个reply address,标记消息来源。发送时会通过该信封决定哪个节点可以获取到该条消息。

5.REP在收到消息时会将第一个空帧之前的所有信息保存起来,将原始信息传送给应用程序。在发送消息时,REP会用刚才保存的信息包裹应答消息。REP其实是建立在ROUTER之上的,但和REQ一样,必须完成接受和发送这两个动作后才能继续。

6.REP要求消息中的信封由一个空帧结束,所以如果你没有用REQ发送消息,则需要自己在消息中添加这个空帧

7.可通过ROUTER套接字来异步地发送消息。ROUTER是ZMQ中唯一一个可以定位消息来源的套接字。

8.DEALER可以是一个黑洞(只负责处理消息,不给任何返回)、代理(将消息转发给其他节点)或是服务(会发送返回信息)。如果你要求DEALER作为服务能够进行回复,发送返回信息,那就要保证只有一个ROUTER连接到DEALER,因为DEALER并不知道哪个特定的节点在联系它,如果有多个节点,它会做负载均衡,将消息分发出去。但如果DEALER是一个黑洞,那就可以连接任何数量的节点。

9.ROUTER发出的消息无法被路由的话,ØMQ会丢弃这些消息。

10.在将消息路由给DEALER时,我们手工建立了这样一个信封:

bubuko.com,布布扣

ROUTER套接字会移除第一帧,只将第二帧的内容传递给相应的DEALER。当DEALER发送消息给ROUTER时,只会发送一帧,ROUTER会在外层包裹一个信封(添加第一帧),返回给我们。

11.如果使用dealer发送消息时,不用想REQ那样添加一个空帧,只是原封不动的发送消息

12.在将消息路由给REQ套接字时,需要注意一定的格式,即地址-空帧-消息:

bubuko.com,布布扣

13.要将消息路由给REP,我们需要创建它能辨别的信封:

bubuko.com,布布扣

14.REQ套接字在发送消息时会向头部添加一个空帧,接收时又会自动移除。

 来源:http://arch.corp.anjuke.com/blog/2011/10/09/zguide-cn-chapter3/

zeromq 笔记,布布扣,bubuko.com

zeromq 笔记

原文:http://www.cnblogs.com/liton/p/3793959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!