文档章节

Rocketmq集群consumer消费(同组及不同组)

tantexian
 tantexian
发布于 2016/06/30 23:11
字数 1389
阅读 15743
收藏 2

一 机器部署

1、机器组成

7台机器,均为16G内存

每台服务器均有4个CPU,2核

 

2、运行环境配置

3、刷盘方式

每台机器master机器均采用异步刷盘方式

 

 

 

 

二 、同组consumer均衡消费queue

1、评测目的

   测试同一个consumerGroup组的所有consumer均衡消费同一个topic的所有queue。

  

2、评测指标

    master机器个数

    topic的队列数

    consumerGroup组的consumer个数

   

3、评测逻辑

  总队列数值 = master机器个数 * 指定topic的queue个数

    如果某个topic有4个队列, 存在6个consumer,在有两台master机器场景下,那么第一个、第二个Consumer消费2个队列,其余consumer消费1个队列。

  如果Consumer 超过队列数量,那么多余的Consumer将不能消费消息。

 

4、评测步骤

    (1)通过rocketmq管理控制台创建topic,并指定默认的队列个数。

    (2)配置一组具有相同consumerGroup名称的consumer,并启动consumer端。

    (3)配置producer端,并向指定的topic发送消息。

    (4)记录consumer端的消费记录,分析每个consumer消费的queueId和broker机器所在的IP

    (5)更新topic的queue个数,重复步骤2、3、4。

   

5、评测过程

    (1)第一组

    创建topic,更新默认的队列个数为4个

   

    启动producer端,发送20条消息,记录如下:

   

   

   

    6个consumer端的消费记录如下:

    第1个consumer:

 

    第2个consumer:

 

    第3个consumer:

 

    第4个consumer:

 

    第5个consumer:

 

    第6个consumer:

   

    分析得出结论:

总队列数量 Consumer数量 Reblance结果
(期望)
Reblance结果
(实际)
Master机器 消费条数
Master1 Master2
4 6 C1:2 C1:2 2 0 6
C2:2 C2:2 2 0 6
C3:1 C3:1 0 1 2
C4:1 C4:1 0 1 2
C5:1 C5:1 0 1 2
C6:1 C6:1 0 1 2

 

 

 

(2)第二组

    创建topic,更新默认的队列个数为3个

   

    启动producer端,发送20条消息,记录如下:

   

   

    6个consumer端的消费记录如下:

    第1个consumer:

 

    第2个consumer:

 

    第3个consumer:

 

    第4个consumer:

 

    第5个consumer:

    第6个consumer:

   

    分析得出结论:

总队列数量 Consumer数量 Reblance结果
(期望)
Reblance结果
(实际)
Master机器 消费条数
Master1 Master2
3 6 C1:1 C1:1 1 0 4
C2:1 C2:1 1 0 3
C3:1 C3:1 0 1 3
C4:1 C4:1 0 1 3
C5:1 C5:1 0 1 3
C6:1 C6:1 1 0 4

 

 

(2)第三组

    创建topic,更新默认的队列个数为2个

   

    启动producer端,发送20条消息,记录如下:

   

   

    6个consumer端的消费记录如下:

    第1个consumer:

 

    第2个consumer:

 

    第3个consumer:

 

    第4个consumer:

 

    第5个consumer:

   

    第6个consumer:

   

    分析得出结论:

总队列数量 Consumer数量 Reblance结果
(期望)
Reblance结果
(实际)
Master机器 消费条数
Master1 Master2
2 6 C1:1 C1:1 1 0 5
C2:1 C2:1 0 0 0
C3:1 C3:1 0 1 5
C4:1 C4:1 0 1 5
C5:1 C5:1 1 0 5
C6:1 C6:1 0 0 0

 

三个组的测试结果,的确达到了queue均匀消费。分析队列数量、Consumer数量、Replance结果如下表

总队列数量 Consumer数量 Reblance结果
4 6 C1 - C2:2
C3 - C6:1
3 6 C1 - C6:1
2 6 C1 - C4:1
C5 - C6:0

 

 

 

三、不同组consumer消费相同topic

1、评测目的

   测试多个不相同的consumerGroup组的所有consumer消费同一个topic的消息。

  

2、评测指标

    consumerGroup组的名称以及instanceName实例

    topic消息的个数、顺序、queueId、msgId

   

3、评测逻辑

  位于不同consumerGroup组的 consumer端,可以同时消费相同topic的消息,所以只需要记录不同组的consumerGroup消费消息msgId的顺序即可。

  

4、评测步骤

    (1)创建两个不同consumerGroup组的consumer端。

    (2)配置producer端,并向指定的topic发送消息,记录消息的msgId、body等信息

    (3)对比分析消费记录。

   

5、评测过程

    创建不同comsumerGroup组,启动各自的consumer实例。

   

   

   

   

    producer向指定topic发送消息,消息记录如下

   

   

    consumer端消费记录如下

   

 

   

分析消费记录可知

    两组consumerGroup的consumer实例均消费了同一个topic的所有消息,包括消息的顺序、msgId、queueId等等都是完全一致的,测试结果与期望相符合。

 

 

四、评测结果

   

1、位于相同consumerGroup组的consumer端,在消费同一个topic的队列的数据,可以均衡消费queue。

注:queue的总数 = master机器台数 * topic的队列数

   

2、不同组的consumerGroup的consumer端,可以消费相同的topic消息,且消费消息的顺序、msgId、offset、body等参数完全一致。

   

3、剩余的功能点,本周暂未测试,留待后续深入研究。

    (1)支持动态切换topic、minOffset

    (2)当一个group下的consumer在消费过程中断服务,切换另外的group下的consumer开始消费,观察是否隔离

    (3)消息从哪里开始消费、消息回溯

    (4)重试队列、死信队列

 

4、已测试功能点

    (1)集群消费动态加入、删除、负载

    (2)广播消费

    (3)延迟消费(2分钟、1分钟、10秒)

    (4)Producer设置topic的queue数目

    (5)pull中拉取消息分页数目

    (6)一个consumer可订阅多个topic,可选择性的订阅topic的tag

    (7)当前消费数,最大消费数

    (8)消息堆积数量处理

    (9)一个group下平分一个topic的quene

    (10)不同组的group同时消费一个topic

© 著作权归作者所有

tantexian
粉丝 225
博文 527
码字总数 746616
作品 0
成都
架构师
私信 提问
加载中

评论(2)

tantexian
tantexian 博主

引用来自“WeiXiaodong”的评论

测完了吗 快点写
这些测试都很简单,你直接自己测试下就ok。后续很多都没有整理了
WeiXiaodong
WeiXiaodong
测完了吗 快点写
说说MQ之RocketMQ(一)

原文出处:Valleylord RocketMQ 是出自 A 公司的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进,消息可靠性上比 Kafka 更好,目前,RocketMQ 的文档仍然不够丰...

Valleylord
2018/10/12
0
0
让你rocketmq用得比预期要好的 1 种方法

匠心零度 转载请注明原创出处,谢谢! 方法 让你rocketmq用得比预期要好的 1 种方法:就是认真思考下面的几个问题: 使用rocketmq能解决那些问题?那些问题是不能解决的? 我们什么时候该添加...

匠心零度
2018/04/19
0
0
说说MQ之RocketMQ(三)

原文出处:Valleylord RocketMQ 的主备模式 按之前所说,只有 RocketMQ 的多主多从异步复制是可以生产使用的,因此只在这个场景下测试。另外,消息采用 Push 顺序模式消费。 假设集群采用2主...

Valleylord
2018/10/12
0
0
RocketMQ与Kafka对比

RocketMQ与Kafka对比(18项差异) 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步...

莫问viva
2015/05/08
608
0
[RocketMQ]消息中间件—RocketMQ消息消费(三)(消息消费重试)

摘要:如果Consumer端消费消息失败,那么RocketMQ是如何对失败的异常情况进行处理? 前面两篇RocketMQ消息消费(一)/(二)篇,主要从Push/Pull两种消费模式的简要流程、长轮询机制和Consu...

morpheusWB
2018/09/29
190
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部