RocketMq(一) -- 基础
各个mq比较
ActiveMq和RabbitMq单机吞吐量是万级的,RocketMq和kafka是十万级。ActiveMq可能丢失数据,RocketMq可以做到零丢失。
RocketMq四个核心组成部分
NameService: Broker和Topic的注册中心, 10s检查Broker的心跳,如果120s没有心跳就把broker从心跳剔除。
Broker:接收生产者生产的消息、给消费者消费,Master即可以读也可以写,Slave只能读不能写。 30s发送心跳给NameService
Producer: 生产消息
Consumer:消费消息
RocketMq基本概念
分组group:由producer和cunsumer两部分组成
producer: 生产消息,主要作用于事务消息,如果当前事务消息中有一条处于等待但已经超时,broker就会查同个group 下其他的producer,看这个消息是提交了还是回滚了
consumer:消费消息,消息A被consumer1消费了还会被consumer2消费
主体Topic:区分消息的种类,标识一类消息的名称
消息队列Queue:用于发送和接收消息,一个topic会有多个queue
标签tag: 生产者发送消息给topic时用于区分不同的消息
偏移量offset:queue一般是个数组,offset就是数组的下标就是偏移量
Rocketmq执行流程
1.启动NameService , 监听端口等待producer、consumer、broker连接。
2.启动broker, 注册NameService 并定时发送心跳。
3. producer和NameService建立长连接, 从注册表中获取指定的broker和queue,和broker建立长连接,向queue发送信息。
4. consumer和NameService建立长连接,获取注册表中的broker、topic、queue,并与broker建立长连接,接受消息。consumer每隔30s会向broker发送心跳。
参考:https://baijiahao.baidu.com/s?id=1740645985103393739
https://lhz1219.blog.csdn.net/article/details/122815231