关于rocketMQ踩坑的那些事

在最近,我所写的这个项目需要使用到rocketMQ,为了图方便我便使用的是Windows版本的,但是在使用的过程中首先是发现无法发送消息出去,报错信息为

org.apache.rocketmq.client.exception.MQClientException: Send [3]
times, still failed, cost [66]ms, Topic: topic, BrokersSent:
[LAPTOP-VDCF1Q80, LAPTOP-VDCF1Q80, LAPTOP-VDCF1Q80] See
http://rocketmq.apache.org/docs/faq/ for further details.

大概意思就是发送过几次都无法发送出去,我在官方文档中发现了有和我这个一样的报错问题提供,

在这里插入图片描述
然后我就根据解决方案一个个进行排查,首先我去修改了配置文件,各种修改都发现没有用,修改了conf中的broker的配置,加了以下这些信息

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#Broker 对外服务的监听端口
listenPort=10911
#Broker监听的ip
brokerIP1=127.0.0.1
brokerIP2=127.0.0.1#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000enablePropertyFilter=truetransactionTimeout=3000
transactionCheckMax=5
transactionCheckInterval=2000

然后还是没有用,然后我就怀疑是不是防火墙的问题,然后我把防火墙关闭之后依然无效,然后后面尝试了更换mq的版本,发现依旧不行还是一样的报错,然后到后面发现直接启动不了broker了,都不是发送不了信息的问题了,然后发现由于mq是持久化的保存在磁盘上的,所以要把缓存文件给清楚,就是c盘中的store文件夹整个删除后就可以了,然后启动之后还是发现和最初的报错一样,无法发送信息出去,然后后面就决定要尝试把mq部署到linux上,试试linux上的mq能不能行,然后就先下载了VMware软件,下载过程还是比较顺利的,我是在b站上看的视频中给的链接下载的不是在官网,因为我在官网注册不了账号不知道为什么,然后安装好VMware之后,就安装centos 7,镜像文件的话是在阿里云的镜像网站上直接下载的,速度还是可以的,然后安装centos 7的过程也遇到很多问题,一开始设置错了,导致安装一直卡在 357/1400 到后面直接采用推荐安装,就不自定义安装之后就顺畅很多,但还是卡在 956/1400 然后百度之后发现是需要重新初始化网络环境
以管理员启动cmd后在cmd中输入以下命令
netsh winsock reset
然后就成功安装好了centos 7了,然后为了方便采用第三方软件去链接虚拟机方便操控,一开始我选择了之前使用过的Xshell,然后后面发现无法上传文件,不知道为什么,一开始以为是没有使用root用户,更换为root用户之后还是不行,且还不会显示报错信息或者上传失败的提醒,就直接没有反应,然后我就看了黑马的linux课程,然后就换了 finalshell进行使用,然后这个软件至少会有上传失败的显示,然后我发现上传失败是因为需要使用root用户,且要把链接用户的用户名设置那里也要改为root,然后就可以成功上传文件了,然后使用mq需要先给虚拟机安装jdk1.8以上的版本,然后安装jdk的过程也疯狂踩坑,一开始不知道为什么无法解压下载的jdk的gz压缩包(后面发现是上传的问题,上传的时候可能出现了文件遗失,我觉得是xshell的问题,在我尝试了很多之后都无法安装jdk之后,内心很是崩溃,然后后面我重启了电脑,重启了虚拟机,决定一切重新开始,,这时候发现能够解压了,然后后面配置了环境变量,然后source /etc/profile 还是原本的openJDK,然后我又重新创建了文件夹,重新配置,然后修改了环境变量的配置为:

 export JAVA_HOME=/app/jdk1.8.0_391/PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/binexport CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ 

然后再source时就发现安装成功了,
然后后面就是配置mq,也是踩坑不少,
非常感谢一篇文章:CentOS下RocketMQ单机版安装

我一开始也修改了jvm的配置文件,修改了内存大小,但是启动时遇到这个问题
在这里插入图片描述
2023-12-04 19:38:56 INFO ShutdownHook - shutdown hook was invoked, 1 times.

然后我就把 安装文章中说的,把linux的防火墙关掉了,
修改了broker的配置文件,增加了以下代码

namesrvAddr = 127.0.0.1:9876 //之前我设置的是虚拟机的ip地址:9876,就不是本机地址了
autoCreateTopicEnable = true//这个是设置自动创建主题

并且我也在环境变量中添加了 ROCKETMQ_HOME 就是mq的文件路径
最后终于顺利启动mq啦!!,太激动了,idea中链接mq只需要设置 rocketmq.nameServer=虚拟机ip地址:9876 就可以成功使用到linux的mq了,
这一切真的很不容易,我从前一天的下午五点 然后到第二天的晚上八点半才修好,总算成功完结了自己的项目啦!
希望大家都可以修好bug!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/247018.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断是否存在重复的数

系列文章目录 进阶的卡莎C_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(C…

Pygame游戏实战六:飞机大战

介绍模块 本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个飞机大战,通过控制自己的飞机来攻击敌机,敌机的速度也忽快忽慢,看看这个是你小时候玩的游戏吗? 最小开发框架 详…

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树,Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式,这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径,…

Ubuntu20.04安装向日葵、开机自启、解决windows系统远程黑屏(笔记)

这里写目录标题 动机1. Ubuntu20.04 安装向日葵2. 设置开机自启3. 解决windows不可远程的问题4. 大公告成 动机 办公室有个工作站,要比我的笔记本的CPU稍微好一点,用来跑陆面过程。我信心满满的装了个Ubuntu20.04双系统,但是发现向日葵安装不上了。我少…

面试必会-JAVA基础篇-02

文章目录 11. ArrayList 和 LinkedList 的区别是什么?12. 说一下HashMap的实现原理?13. HashMap的put方法的具体流程?14. 讲一讲HashMap的扩容机制15. ConcurrentHashMap 底层具体实现知道吗?16. 创建线程的四种方式17. runnable …

【C++ STL】vector类最全详解(什么是vector?vector类的常用接口有哪些?)

目录 一、前言 二、什么是vector ? 💦 vector的基本概念 💦vector的作用是什么 💦总结 三、 vector的(一维)定义 四、vector(一维)常用接口的使用 💦vector的常见构造(初始化) 💦vector…

python处理pdf中二维码图片,批量生成图片

比如一种pdf页面上有很多二维码,这些二维码比如是用于停车的,每次打开pdf截图或者其他模式存下来,然后扫码使用是不是感觉很麻烦,可以使用python把每个二维码生成图片,然后保存起来使用,当然想方便的话还可…

配置攻击防范示例

1、组网需求。 如果局域网内存在Hacker向SwitchA发起畸形报文攻击、分片报文攻击和泛洪攻击,将会造成SwitchA瘫痪。为了预防这种情况,管理员希望通过在SwitchA上部署各种攻击防范措施来为用户提供安全的网络环境,保障正常的网络服务。 2、配…

奥本海默-电影剧情简介

片头,奥本海默 脑海浮现恒星生命周期画面 1925年,奥本海默离开美国去欧洲学习新物理(量子力学) 脑海浮现量子力学相关画面(像 德布罗意波) 1927年从德国哥廷根大学毕业,获得物理学博士学位。…

ssm农业信息管理系统源码和论文

摘 要 网络的广泛应用给生活带来了十分的便利。所以把农业信息管理与现在网络相结合,利用java技术建设农业信息管理系统,实现农业信息管理的信息化。则对于进一步提高农业信息管理发展,丰富农业信息管理经验能起到不少的促进作用。 农业信息…

二极管:二极管的基本原理

一、认识导体、绝缘体、半导体 什么是导体? 导体 conductor ,是指电阻率很小,且容易传导电流的物质。导体中存在大量可自由移动的带电粒子,也称为载流子。在外电场的作用下,载流子作定向运动,形成电流。 …

【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现

文章目录 一、进程创建1.fork函数2.fork函数返回值3.写时拷贝4.fork常规用法5.fork调用失败的原因 二、进程终止1.进程退出码2.进程退出场景3.进程常见退出方法 三、进程等待1.为什么要进行进程等待2.如何进行进程等待1.wait方法2.waitpid方法3.获取子进程status4.进程的阻塞等…