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

关于消息队列速率的解决方案

时间:2018-06-12 14:08:58      阅读:493      评论:0      收藏:0      [点我收藏+]

标签:消息队列   消息队列速率   消息队列应用   

消息队列在执行过程中, 如何统计消息队列执行一轮的时间以及效率呢? 如果消息队列中的任务变多, 则需要对应增加消费进程, 保证队列不被堆积。

一、一般消息队列生产和消费类型

1. 一次性任务消费

从某个地方一次性写入多个任务到队列, 消费完成后就算完成

2. 不断写入的任务消费

一般是判断队列任务少了, 就开始写入任务, 队列任务足够则不写入任务。对应的消费进程也是持久性进程。

3. 有任务则写入, 然后持续消费

随时可能有任务产生, 之后不断消费。任务写入时间不可控, 所以消费进程一般也得是持久性进程。

二、如何计算出来消费一轮的时间以及消费速率

1. 通过统计任务开始和结束, 计算消费总时间

技术分享图片

技术分享图片

当时最早想到的就是这种方式, 这种方式的优点:

  1. 统计相对准确

缺点:

  1. 流程复杂且耦合性高
  2. 如果中间有队列暂停之类的时间, 也会被包含进时间内。

2. 通过读取队列状态, 获取到一定时间内消耗数量

技术分享图片
根据两次读取的任务数, 得到固定时间内的消耗掉的任务数, 计算出来执行的任务。

3. 通过计算单个任务的执行时间, 然后根据运行的进程数, 来计算一轮的时间。

技术分享图片

之后根据运行进程数, 以及任务总数, 来获取到一轮的更新时间。 或者一段时间内取样, 来计算需要的机器和进程数。

如果有其他更好的办法, 希望可以一起交流下。

关于消息队列速率的解决方案

标签:消息队列   消息队列速率   消息队列应用   

原文地址:http://blog.51cto.com/a3147972/2128409

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