美文网首页
RocketMQ顺序消息

RocketMQ顺序消息

作者: 多关心老人 | 来源:发表于2020-06-19 14:59 被阅读0次

阿里help:
https://help.aliyun.com/document_detail/49319.html?spm=5176.ons.0.CreateTopic_d2e8.3621176fNAONea#section-pdd-h4p-aax

相关概念:
producer:消息发送
consumer:消费者实例, 一个conumer实例可以有多个消费者线程.
shardingkey:消息路由, 根据sharding key路由保存到哪个queue(默认好像是16个queue).
queue:物理存储消息的地方

顺序消息需要做的地方:

  1. 发送端需要用OrderProducer, send消息的时候需要给shardingkey.
  2. 消费端要用OrderConsumer.
    顺序消息和producer和consumer有关,和创建的topic的消息类型无关(测试结果是这样, 不知道其他方面有没有区别).

16个queue会均匀分配给多个consumer实例, 每个consumer实例下面的consumer thread再分配每一个queue, queue和consumer thread的关系是N:1关系,即一个consumer thread可以对应1到多个queue, 一个queue只能对应一个consumer thread. 但queue和consumer thread不是绑死关系,从测试结果看:从queue中取出一条消息扔进consumer thread pool, 执行结束后再取queue中下一条消息.

如16个queue, 起了2个consumer, 那么每个consumer会分到8个queue, 如果每个consumer下面有10个线程,那么在一个时刻每个consumer只有8个线程有工作,其他2个线程空闲等待调度. 如果每个consumer下面只有4个线程, 那么每个线程就会大概对应2个queue.

rocketmq支持动态的consumer实例扩容缩容, 中间切换的时间大概在30S~60S.

相关文章

网友评论

      本文标题:RocketMQ顺序消息

      本文链接:https://www.haomeiwen.com/subject/teivxktx.html