传送门
SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口
前言
MQ=messege queue消息中间件
- ActiveMQ:Apache,是java编写的,社区活跃度低,很少使用了
- RabbitMQ:erlang=二郎发音编写,会这个语言的不多,定制化就难,集群只保证高可用,不能提高并发,10万并发
- Kafka:开源的,Scala和java编写(Scala用了jvm),功能少(不支持死信,消息延迟等),100万并发,大数据实时计算和日志采集最佳,不遵守常见MQ协议,是自研的协议
- RocketMQ:阿里对比kafka,取其精华,java编写,10万+并发,功能多,几乎全场景使用,不遵守常见MQ协议,是自研的协议
小哈学java文章中17个方面对比下来:Kafka和RocketMQ两个最牛逼。
备注:SpringCloudNetflix的时候只支持Kafka和RabbitMQ,其他都不支持。SpringCloudAlibaba支持所有,但是提倡用RocketMQ
本文主要说一下RocketMQ
一、概念
Topic是一类消息的集合,生产者可以发多种Topic消息,消费者只能消费一种Topic,一条消息只能属于一个主题。Topic:msg=1:n msg:Topic=1:1 P:Topic=1:N c:Topic =1:1
磁盘阵列
二、工作原理
1、消息的生产
2、消息的存储
3、与kafka的对比
三、官网
官网 https://rocketmq.apache.org/
四、安装window4.8.0版本
打开官网,下载binary的对应版本,并且配置环境变量
cd D:\Soft\RocketMQ\rocketmq-all-4.8.0-bin-release\bin
start mqnamesrv.cmd -- 启动nameserver,默认端口9876
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true -- 启动broker
broker启动成功截图
五、安装linux4.8.0版本
cd /usr/local/rocketmq
unzip rocketmq-all-4.8.0-bin-release.zip
cd /usr/local/rocketmq/rocketmq-all-4.8.0-bin-release/bin
## nohup sh mqnamesrv > namesrv.txt & -- 启动nameserver
nohup sh mqnamesrv & --建议都放到/root/logs下统一管理,因为nacos等都在这边。
tail -f ~/logs/rocketmqlogs/namesrv.log --查看日志
cd /usr/local/rocketmq/rocketmq-all-4.8.0-bin-release/conf
vim broker.conf -- 最后一行增加一下nameserve的ip地址,就是本linux的ip地址 brokerIP1=172.16.0.18
cd /usr/local/rocketmq/rocketmq-all-4.8.0-bin-release/bin
--先改配置,默认堆内存8G太大了,改小为512m,512m,256m,最后Xmn是年轻代大小。
vim runbroker.sh
vim runserver.sh
## nohup sh mqbroker -c ../conf/broker.conf -n 172.16.0.18:9876 autoCreateTopicEnable=true > broker.txt & -- -c是指定配置文件 -n指定nameserver
nohup sh mqbroker -c ../conf/broker.conf -n 172.16.0.18:9876 autoCreateTopicEnable=true &
tail -f ~/logs/rocketmqlogs/broker.log
注意:坑 这个broker一直报错。所以得在/root/store 下面创建commitlog和consumequeue 文件夹
---------------------------------------------------上面为rocketmq启动完成
cd /usr/local/rocketmq/rocketmq-all-4.8.0-bin-release/bin
sh mqshutdown broker
sh mqshutdown namesrv
----快速启动命令
cd /usr/local/rocketmq/rocketmq-all-4.8.0-bin-release/bin
nohup sh mqnamesrv &
nohup sh mqbroker -c ../conf/broker.conf -n 172.16.0.18:9876 autoCreateTopicEnable=true &
tail -f ~/logs/rocketmqlogs/broker.log
---------------------------------------------------上面为rocketmq暂停关闭,也可以ps -ef | grep mq 杀掉一堆mq进程
cd /usr/local/rocketmq
tar -zxvf rocketmq-dashboard-rocketmq-dashboard-1.0.0.tar.gz
cd /usr/local/rocketmq/rocketmq-dashboard-rocketmq-dashboard-1.0.0/src/main/resources
vim application.properties -- 修改端口修改nameserver的ip地址端口号
cd /usr/local/rocketmq/rocketmq-dashboard-rocketmq-dashboard-1.0.0
mvn clean package -Dmaven.test.skip=true -- maven打包成jar包
cd /usr/local/rocketmq/rocketmq-dashboard-rocketmq-dashboard-1.0.0/target
nohup java -jar rocketmq-dashboard-1.0.0.jar & -- 生产建议用黑洞命令,logback.xml指定好了目录,和上面的一起,都在 root/logs
---------------------------------------------------上面为console的安装和启动
增加nameserver的ip地址
改broker启动内存
修改端口修改nameserver的ip地址端口号
改内存
根据提示创建这两个文件夹