官方文档
https://github.com/apache/rocketmq/blob/master/docs/cn/concept.md
rocketmq使用
rocketmq是阿里巴巴的一款消息中间件,使用java编写,默认端口9876。
#启动namesrvnohup sh bin/mqnamesrv -n 114.55.166.165:9876 >/usr/local/rocketmq/logs/mqnamesrv.log 2>&1 &#启动Borkernohup sh bin/mqbroker -n 114.55.166.165:9876 >/usr/local/rocketmq/logs/mqbrocker.log 2>&1 &#启动时指定配置文件-c broker-b.properties
rocketmq部署。https://www.cnblogs.com/twobrother/p/11655166.html
namesrv
注册中心,服务节点将自己注册到注册中心,此时如果想要对外访问,那么Broker服务节点的地址 和 注册中心的地址 必须是外网地址。
borker
服务节点
producer
生产者。生产者通过nameSrv(注册中心)将消息投递到消息队列。
cosumer
消费者
group
消费者组 或者 生产者组。消费者组,就是搭建消费者的集群,在高可用的情况下使用。
交互流程
- 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。
- Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关系。
- 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic。
- Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息。
- Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息。
消息
Message,
主从搭建
主服务节点和从服务节点,brokerName一样,brokerId不一样,0为主,1为从。
主服务节点和从服务节点之间 会进行消息备份。同步的方式就是主服务节点 进行
使用Dledger搭建主从服务。
rocketmq-console
消息队列的控制台界面。
启动命令
nohup java -jar rocketmq-console-ng-2.0.0.jar --server.port=9877 --rocketmq.config.namesrvAddr=114.55.166.165:9876 &
github地址
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
测试selectorType,tags,keys。
consumer集群。
同步发送,异步发送,批量发送。
