提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
RocketMQ是阿里开源的一款非常优秀中间件产品,脱胎于阿里的另一款队列技术MetaQ,后捐赠给Apache基金
会作为一款孵化技术,仅仅经历了一年多的时间就成为Apache基金会的顶级项目。并且它现在已经在阿里内部被
广泛的应用,并且经受住了多次双十一的这种极致场景的压力。(2017年的双十一,RocketMQ流转的消息量达
到了万亿级,峰值TPS达到5600万)。并且其内部通过Java语言开发,便于阅读与修改。
64位JDK 1.8+;
Maven 3.2.x;
64位操作系统系统,本文档在Windows上安装
下载地址:https://archive.apache.org/dist/rocketmq/4.5.1/
解压到一个无中文无空格的目录下,解压后目录如下:
3.1 更改配置
java的默认启动参数中,启动时堆内存的大小为2g,太大了,调整一下
切换路径到D:\rocketmq-all-4.5.1-bin-release\bin
打开runserver.cmd
把-Xms、-Xmx、-Xmn都设置成512m,将%CLASSPATH%增加"",不然启动时会找不到jdk
同理设置 runbroker.cmd
3.2 启动NameServer
双击mqnamesrv.cmd启动,如下显示则启动成功
3.3 启动broker
进入cmd命令窗口,切换到D:\rocketmq-all-4.5.1-bin-release\bin
执行
mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true
4.1 监听消息
进入cmd命令窗口,切换到D:\rocketmq-all-4.5.1-bin-release\bin
执行:
set NAMESRV_ADDR=127.0.0.1:9876
tools.cmd org.apache.rocketmq.example.quickstart.Producer
4.2 发送消息
进入cmd命令窗口,切换到D:\rocketmq-all-4.5.1-bin-release\bin
执行:
set NAMESRV_ADDR=127.0.0.1:9876
tools.cmd org.apache.rocketmq.example.quickstart.Producer
进入到解压的文件夹D:\rocketmq-dashboard-master\src\main\resources下修改 application.yml 文件
修改客户端的端口号以及MQ的地址和端口号
进入cmd命令窗口,切换到D:\rocketmq-dashboard-master,进行打包成jar包
执行:
mvn clean package -Dmaven.test.skip=true
如下显示则启动成功
在D:\rocketmq-dashboard-master\target路径下会生成对应jar包
进入cmd命令窗口,切换到D:\rocketmq-dashboard-master\target,进行打包成jar包
执行:
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
在自己的浏览器中输入:http://localhost:8888/#/ 即可进入
到此,就已经开始愉快的玩耍了
后续补充
进入到C:\Users\DELL\store目录下删除底下的所有文件
然后再进行重新启动
最终排查发现,是因为消费者在处理消息的方法onMessage中有异常没有捕获到,导致异常上抛,被consumeMessage捕获并判定为消费失败,从而放到了重试队列当中进行重试。
总结:RocketMq中会引起消息重试的两种情况,内部异常和消费超时。
在Consumer中处理消息时,会在消费完消息后判断消费的总时长,如果 比超时时间要长则返回TIME_OUT,注意这里的超时是在consumeMessage内部逻辑处理完毕之后在进行判断的,如果内部逻辑处理成功,但耗时较长,那么也会被判断为超时。