阿里巴巴开源RocketMQ4.x消息队列介绍
-
Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件
-
特点
-
支持Broker和Consumer端消息过滤
-
支持发布订阅模型,和点对点,
-
支持拉pull和推push两种消息模式
-
单一队列百万消息、亿级消息堆积
-
支持单master节点,多master节点,多master多slave节点
-
任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
-
消息失败重试机制、支持特定level的定时消息
-
新版本底层采用Netty
-
4.3.x支持分布式事务
-
适合金融类业务,高可用性跟踪和审计功能。
-
-
概念
-
Producer:消息生产者
-
Producer Group:消息生产者组,发送同类消息的一个消息生产组
-
Consumer:消费者
-
Consumer Group:消费同类消息的多个实例
-
Tag:标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
-
Topic:主题, 如订单类消息,queue是消息的物理管理单位,而topic是逻辑管理单位。一个topic下可以有多个queue,
默认自动创建是4个,手动创建是8个
-
Message:消息,每个message必须指定一个topic
-
Broker:MQ程序,接收生产的消息,提供给消费者消费的程序
-
Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
-
Offset: 偏移量,可以理解为消息进度
-
commit log: 消息存储会写在Commit log文件里面
-
走读官网地址,学会如何学习新技术 http://rocketmq.apache.org/
-
学习资源
-
阿里云服务器源码部署RocketMQ4.X
安装之前需要jdk和maven环境!,官方安装部署文档:http://rocketmq.apache.org/docs/quick-start/
这里我们上传rocketMQ源码包进行安装
> unzip rocketmq-all-4.4.0-source-release.zip
> cd rocketmq-all-4.4.0/
> mvn -Prelease-all -DskipTests clean install -U
> cd distribution/target/apache-rocketmq
下载过程有点漫长,看到下图代表ok!
接下来 Start Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
这里如果服务器内存不足会报错
这里我们只需要调整合适的jvm参数
vim bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
守护进程方式启动
可以看到 name server 已经启动,接下来启动broker
vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"
接下来是官方测试生产和消费消息的例子
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
根据命令就可以看到例子,这里不再赘述。
阿里云源码安装RocketMQ4.X控制台
-
上传源码包-》解压-》进入rocketmq-console目录-》 编译打包 mvn clean package -Dmaven.test.skip=true
务必修改下面两个,再进行编译打包,不然会报错
- 修改 pom.xml 版本号 (官方bug)
- 修改application.xml里面的nameserver地址为 127.0.0.1:9876
- 编译成功!
-
进入target目录 ,
-
守护进程方式启动 nohup java -jar rocketmq-console-ng-1.0.0.jar &
-
完成!