linux安装
查看java版本
java -version
1.8正好,11要修改很多地方。
解压rocketmq
unzip rocketmq-all-4.5.1-bin-release.zip
移动到opt目录下,并重命名文件夹为rocketmq。
修改配置文件
/etc/profile文件下加上
ROCKET_HOME=/opt/rocketmq
PATH=$PATH:$ROCKET_HOME/bin
生效命令(需要在rocketmq目录中?)
. /etc/profile (有空格)
启动
Please set the JAVA_HOME variable in your environment, We need java(x64)! !!
修改bin/runserver.sh,bin/runbroker.sh,bin/tools.sh文件,改成自己的jdk地址
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java/jdk1.8.0_321
继续报错 VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
内存溢出。
还是刚才的三个文件,把内存改小
-server -Xms1g -Xmx1g -Xmn256m(自己合适就行)
mqnamesrv 启动成功
# 1.启动Broker ,内存还要改小,和namesrv不是共用内存的。
mqbroker -n localhost:9876
日志位置
root/logs/rocketmqlogs
关闭
mqshutdown broker
mqshutdown namesrv
可视化工具rocketmq-externals-rocketmq-console-1.0.0
导入idea后,换成jdk1.8,然后通过命令打包
mvn clean package -DskipTests
然后target目录下cmd,运行jar包
java -jar rocketmq-console-ng-1.0.0.jar
跑不起来就直接idea运行吧,懒得改jdk版本了。
连接失败
修改broker.conf,增加
namesrvAddr = 121.196.1.1:9876
brokerIP1 = 121.196.1.1
重新运行
mqbroker -n localhost:9876 -c conf/broker.conf
还是不行,RocketMQ默认使用3个端口:9876 、10911 、11011
端口打开,连接成功。
windows安装
先下载rocketmq,解压,配置环境变量
ROCKETMQ_HOME
E:\Program\rocketmq-all-4.5.1-bin-release\rocketmq-all-4.5.1-bin-release
在bin文件夹中
启动cmd start mqnamesrv.cmd
等到有success
启动broker
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
autoCreateTopicEnable=true?自动创建主题
没有linux碰到的麻烦多,可能自己电脑内存比云服务器大
可视化工具下载
https://github.com/apache/rocketmq-externals/archive/rocketmq-console-1.0.0.zip
或
https://github.com/apache/rocketmq-externals.git
编译E:\WorkSpace\rocketmq-externals-rocketmq-console-1.0.0\rocketmq-externals-rocketmq-console-1.0.0\rocketmq-console
mvn clean package -Dmaven.test.skip=true 直接双击打包会出问题
clean package -DskipTests
运行target
java -jar rocketmq-console-ng-1.0.0.jar
报错javax/xml/bind/ValidationException 猜测是默认JDK版本过高,怎么使用JDK8启动?
过时版本,先凑合用;
解决办法:直接idea中运行
RocketMQ使用
导入maven包
<rocketmq-spring-boot-starter-version>2.0.3</rocketmq-spring-boot-starter-version>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>${rocketmq-spring-boot-starter-version}</version>
</dependency>
spring项目创建监听类
监听主题和分组
主题topic就是这个监听只会监听这个主题的消息
分组consumerGroup是消费者的分组,如果有多个消费者都是这个分组,那他们就会分工合作,保证不会重复读取消息。(消费端自己协调,和生产端没关系)