热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

agent处理的新思路

1.发消息处理从netty过来的消息,以frommstpid进行存储,之后会将seqid进行累加,然后判断tomstpid是否在本域内,如果在将seqid进行累加进行存储。也就是消

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处理的新思路


推荐阅读
author-avatar
钢铁猪991884679
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有