Rhino.Queues随笔3 网络接收流程


 接上一个节,看看消息的接收过程,如果按照于发送的对称的方法,大概也能猜出大概的过程。

与发送不同的是,并不是消息队列管理器QueueManager新建接收协调器,然后运行接收服务。真正的流程是QueueManager直接接收协调器 AcceptMessages(其实就是一个回调函数,不过其实他也不算真正的接收协调器,他只是负责消息接收序列化的存储,然后返回一个负责事务的另一个接收协调器IMessageAcceptance)初始化网络接收操作Receiver,网络接收操作本身就是一个tcp监听服务,然后按照一般的流程接收连接,并且按照队列协议处理相关的数据。

接收的流程对于写过网络程序人来说很简单,加之采用了一个异步辅助框架,这个会在后续文章里面提到。具体的流程如下

1、监听连接;
2、接收连接;
3、接收消息的长度;
4、按照步骤3的长度读取消息数据;
5、序列化收到的数据;
6、调用前面提到的QueueManager初始化接收连接时传递的AcceptMessages的回调函数保存消息,同时回调函数会返回另一个接收协调器负责后续的事务处理;
7、向发送方发送确认消息,然后等待发送收到确认消息后的回复;
8、收到发送方的回复的消息后,提交事务,或者没有收到,回滚事务;
9、如果步骤8提交事务出错,或者回滚事务,则向发送端发送撤销消息;如果正常则正常关闭。

流程可以参照如下,因为是所有的异步,所以这个流程的退出不会影响监听的。



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值