agent处理的新思路

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重新放入待发送队列的最前端,等待下次发送。

转载于:https://www.cnblogs.com/weitong123456/p/4325556.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值