官方文档

https://github.com/apache/rocketmq/blob/master/docs/cn/concept.md

rocketmq使用

rocketmq是阿里巴巴的一款消息中间件,使用java编写,默认端口9876。

  1. #启动namesrv
  2. nohup sh bin/mqnamesrv -n 114.55.166.165:9876 >/usr/local/rocketmq/logs/mqnamesrv.log 2>&1 &
  3. #启动Borker
  4. nohup sh bin/mqbroker -n 114.55.166.165:9876 >/usr/local/rocketmq/logs/mqbrocker.log 2>&1 &
  5. #启动时指定配置文件
  6. -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集群。

同步发送,异步发送,批量发送。