码迷,mamicode.com
首页 > 其他好文 > 详细

agent处理的新思路

时间:2015-03-10 13:28:13      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

1. 发消息处理

从netty过来的消息,以frommstpid进行存储,之后会将seqid进行累加,然后判断tomstpid是否在本域内,如果在将seqid进行累加进行存储。也就是消息会分别存在from和to。如果不在,则重新生成seqid

2.收消息处理

以to存储,然后seqid++存储db

3.get消息处理

lastseqid无效,则将最近未收到ack的消息发过去 返回下一个有效seqid

有效的情况下,根据获取消息个数进行处理 如果是1条那么ack中携带消息体 并返回下一个有效seqid

 

另外现在发送模型是 有一个全局性的发送队列 然后每个用户会有一个待发送队列以及一个ack队列

agent启动后,发送队列定时扫描所有待发送队列是否有消息要发,若有就将该用户的mstpID放入发送队列,等待发送。发送完某个用户的消息后,再次判定其待发送队列是否为空,不为空就将该用户的mstpID从发送队列的对头移至队尾,为空则直接从队头删除。

发送时,agent从待发送队列取一定数目的消息seqID对应的消息进行发送,同时将这些seqID放到ack队列,等待ack。seqID的最大数目为ack队列的空闲值。

ack队列中的消息会标记是否发送过,agent收到ack消息,将对应的消息seqID从ack队列删除。当ack队列剩余的已发送未收到ack的消息超过时间限制,将该seqID重新放入待发送队列的最前端,等待下次发送。

agent处理的新思路

标签:

原文地址:http://www.cnblogs.com/weitong123456/p/4325556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!