注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

yu.chen的博客

坚持到底就是胜利

 
 
 

日志

 
 
关于我

喜欢数学, 喜欢编程,喜欢开发系统,喜欢逆向工程,喜欢欣赏开源前辈的代码

网易考拉推荐

客户端登陆rabbitmq过程代码分析  

2012-09-24 08:45:51|  分类: rabbitmq |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在模仿rabbitmq程序的过程中,仔细看了rabbitmq的登陆的代码。

客户端的登陆的处理逻辑主要包含在源文件rabbit_reader.erl。一直以为connect.start指令是由客户端发出的,其实不是,是服务器发出的。

交互过程是这样的:
1. 客户端发送第一条handshake指令,格式是"AMQPxxxx", xxxx表示客户端的希望的版本。
2. 服务器端接收到handshake指令后,根据希望的版本,构造connect.start消息
包含了协议大版本,小版本,服务器的属性,本地化参数,认证方法
3. 客户端接收后,发送connect.start_ok消息返回给客户端
包含了客户端选择的认证方式,登陆的认证相关的信息,客户端的属性
4. 服务器
4.1. 确认是否接受客户端选择的认证方式,如果接受,按照认证方式,处理其中的”认证相关的信息“,一般是"用户名"与“密码”,这里服务器的连接模块 rabbit_reader.erl不处理解析认证信息,交给相关的认证模块进行解析。通过这种分离的方式,将用户名,密码从登陆协议中分离出去了。
以后升级登陆协议,不需要修改登陆的代码。

rabbit_reader.erl源码中
1. 函数子句handle_input处理第一条整理(handshake)的版本选择问题
2. start_connect/3函数处理第一条指令的connect.start的消息构造
3. handle_method0处理第4步的内容
  评论这张
 
阅读(471)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017