RocketMq环境要求:
- 64bit OS,Linux/Unix/Mac
- 64bit JDK1.8+
- Maven 3.2.x
- Git
- 4g+ free disk for Broker server
RocketMq下载:
http://rocketmq.apache.org 目前最新版本4.5版本点击 Latest releasev4.5
conf目录配置文件说明
2m-2s-async:2主2从异步
2m-2s-sync:2主2从同步
2m-noslave:2主没有从
刷盘:内存数据存入硬盘
异步刷盘:producer向broker发送数据后,broker先存入内存,然后直接响应producer
同步刷盘:producer向broker发送数据后,broker先存入内存,进行持久化,然后在响应producer
项目搭建:步骤省略自行百度
检验是否成功:
先启动namesrv
nohup sh mqnamesrv &
再启动broker
nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-a.properties > /dev/null 2>&1 &
输入jps 可以看到BrokerStartup/NameServStartup
9876是内部server的端口号
下载RocketMq控制台
https://github.com/apache/rocketmq-externals/tree/master
运维:记录当前的地址和端口号
集群:有哪些节点 一般都是2主2从
主题:分为普通、重试、死信(重试n次)、可以看到状态、路由、consumer管理、topic配置、发送消息、重置消费位点
消费者:可以查看订阅组、数量、版本、类型、模式、TPS、延迟、配置报警等
生产者:可以在对应主题对应生产组进行搜索
消息:可以对topic进行查询、可以通过MessageKey/MessageId进行查询
RocketMq架构介绍
1.启动NameServer(Alibaba)集群 等待Broker、Producer、Consumer,相当于路由控制中心 是一个无状态节点 记录各种信息
2.启动Broker,Broker集群由多个主从构成,使用不同的Broker Id来定义,BrokerId为0表示Master,非0表示Slave跟所有Name Server保持长连接,定时发送心跳包。心跳包包含当前Broker信息(IP+端口等)以及存储所有topic信息。定时(每隔30s)注册Topic信息到所有Name Server。Name Server定时(每隔10s)扫描所有存活broker的连接,如果Name Server超过2分钟没有收到心跳,则Name Server断开与Broker的连接。
3.Producer找到Name Server 然后才能找到对应的Broker
4.Consumer同上 RocketMq支持多种模式 如推模式 和 拉模式
总结:如NameServer与Broker,Producer和Broker,Consumer和Broker 他们之间的接收方通信都是每10s一扫描,当2分钟还没有收到心跳包则断开,主动发送或者拉取都是30s获取相应Topic信息/发送心跳