Rocketmq 安装后使用tools测试报如下错误:org.apache.rocketmq.client.exception.MQClientException: Send [3] times, still failed, cost [11]ms, Topic: TopicTest, BrokersSent: [localhost.localdomain, localhost.localdomain, localhost.localdomain] See http://rocketmq.apache.org/docs/faq/ for further details. at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:674) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1384) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1328) at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:330) at org.apache.rocketmq.example.quickstart.Producer.main(Producer.java:67) Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1 DESC: create mapped file failed, server is busy or broken. BROKER: 10.1.17.41:10911 For more information, please visit the url, http://rocketmq.apache.org/docs/faq/ at org.apache.rocketmq.client.impl.MQClientAPIImpl.processSendResponse(MQClientAPIImpl.java:666) at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:505) at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:487) at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:431) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:863) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:593) ... 4 more
这个是broker配置
[grass@localhost rocketmq-all-4.9.0-bin-release]$ ./bin/mqbroker -m
2023-05-22 23:27:51 INFO main - namesrvAddr=localhost:9876
2023-05-22 23:27:51 INFO main - brokerIP1=10.1.17.41
2023-05-22 23:27:51 INFO main - brokerName=localhost.localdomain
2023-05-22 23:27:51 INFO main - brokerClusterName=DefaultCluster
2023-05-22 23:27:51 INFO main - brokerId=0
2023-05-22 23:27:51 INFO main - autoCreateTopicEnable=true
2023-05-22 23:27:51 INFO main - autoCreateSubscriptionGroup=true
2023-05-22 23:27:51 INFO main - msgTraceTopicName=RMQ_SYS_TRACE_TOPIC
2023-05-22 23:27:51 INFO main - traceTopicEnable=false
2023-05-22 23:27:51 INFO main - rejectTransactionMessage=false
2023-05-22 23:27:51 INFO main - fetchNamesrvAddrByAddressServer=false
2023-05-22 23:27:51 INFO main - transactionTimeOut=6000
2023-05-22 23:27:51 INFO main - transactionCheckMax=15
2023-05-22 23:27:51 INFO main - transactionCheckInterval=60000
2023-05-22 23:27:51 INFO main - aclEnable=false
2023-05-22 23:27:51 INFO main - storePathRootDir=/home/grass/store
2023-05-22 23:27:51 INFO main - storePathCommitLog=/home/grass/store/commitlog
2023-05-22 23:27:51 INFO main - flushIntervalCommitLog=500
2023-05-22 23:27:51 INFO main - commitIntervalCommitLog=200
2023-05-22 23:27:51 INFO main - flushCommitLogTimed=false
2023-05-22 23:27:51 INFO main - deleteWhen=04
2023-05-22 23:27:51 INFO main - fileReservedTime=72
2023-05-22 23:27:51 INFO main - maxTransferBytesOnMessageInMemory=262144
2023-05-22 23:27:51 INFO main - maxTransferCountOnMessageInMemory=32
2023-05-22 23:27:51 INFO main - maxTransferBytesOnMessageInDisk=65536
2023-05-22 23:27:51 INFO main - maxTransferCountOnMessageInDisk=8
2023-05-22 23:27:51 INFO main - accessMessageInMemoryMaxRatio=40
2023-05-22 23:27:51 INFO main - messageIndexEnable=true
2023-05-22 23:27:51 INFO main - messageIndexSafe=false
2023-05-22 23:27:51 INFO main - haMasterAddress=
2023-05-22 23:27:51 INFO main - brokerRole=ASYNC_MASTER
2023-05-22 23:27:51 INFO main - flushDiskType=ASYNC_FLUSH
2023-05-22 23:27:51 INFO main - cleanFileForciblyEnable=true
2023-05-22 23:27:51 INFO main - transientStorePoolEnable=false
当前服务器只有一个网卡
`[grass@localhost rocketmq-all-4.9.0-bin-release]$ ifconfig
eno16777984: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.17.41 netmask 255.255.255.0 broadcast 10.1.17.255
inet6 fe80::250:56ff:fe97:125f prefixlen 64 scopeid 0x20
ether 00:50:56:97:12:5f txqueuelen 1000 (Ethernet)
RX packets 26488743 bytes 3357212912 (3.1 GiB)
RX errors 0 dropped 48 overruns 0 frame 0
TX packets 2293835 bytes 422698045 (403.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 8558128 bytes 4355582252 (4.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8558128 bytes 4355582252 (4.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
`
卸载重新安装
看错误提示RocketMQ 创建 mapped file 时失败,创建 mapped file 需要占用一定的磁盘空间,检查磁盘是否已经满了或者空间不足。
其次,可以尝试升级下RocketMQ 的版本看看。
MQClientException
是RocketMQ客户端抛出的异常,表示客户端在使用RocketMQ时发生了错误。常见的错误包括:
这个异常是RocketMQ客户端发送消息时出现的异常,表示发送消息失败,已经尝试了3次发送,但仍然失败。异常信息中还包含了发送消息的主题(Topic)和已经尝试发送的Broker列表(BrokersSent),以及发送消息的耗时(cost)。
出现这个异常可能有多种原因,比如网络故障、Broker宕机、消息发送速度过快等。
建议 检查网络连接是否正常,Broker是否正常运行,以及消息发送速度是否过快等因素 ,找出问题所在并进行修复。
RocketMQ详细安装教程(RocketMQ安装、RocketMQ修改默认端口、console管理后台安装)
这个比较详细,跟着安装
https://blog.csdn.net/qq359605040/article/details/124272238
跟着步骤重新安装下
https://blog.csdn.net/weixin_67767103/article/details/127260319
从 RocketMQ 的错误信息来看,发送消息时出现了 create mapped file failed, server is busy or broken
错误,具体原因可能是 broker 没有成功启动或者 broker 内存溢出等原因导致消息发送失败。
根据 broker 配置,可以看到启动命令 -m
表示以 master 身份启动 broker,brokerRole=ASYNC_MASTER
也表示当前 broker 是一个异步复制的 master 实例。建议检查 broker 启动时的日志,查看是否有异常或者错误信息。
此外,检查一下 broker 的内存和磁盘使用情况,特别是内存使用量是否过高,可能由于内存不足导致内存溢出,或是系统没有足够内存造成虚拟内存回写到磁盘出现文件读写错误等情况。
最后,执行 jps
命令,看看 RocketMQ 是否已经完全启动,可以确定一下是否需要等待一段时间看看 RocketMQ 是否自行恢复。
答案由GPT-4Plus大模型(语音)与博主@晓码自在合作编写:
根据错误信息和配置,这可能是由于以下几个原因导致的:
namesrv 地址配置不正确
错误信息显示:namesrvAddr=localhost:9876,但是实际部署中namesrv的地址可能不是这个。
解决方案:确认namesrv的正确IP和端口,在broker配置文件中修改namesrvAddr配置。
broker IP地址配置不正确
错误信息显示:brokerIP1=10.1.17.41,但是实际部署中broker可能绑定到其他IP地址。
解决方案:确认broker绑定的IP地址,在broker配置文件中修改brokerIP1配置。
权限问题
错误信息显示:create mapped file failed, server is busy or broken.
这可能是因为broker没有权限创建某些文件或目录导致的。
解决方案:确认broker所在用户有权限创建配置的storePathRootDir等目录。如果没有权限,修改目录权限或切换到有权限的用户启动。
网络问题
错误信息显示:Send [3] times, still failed,这表示producer向broker发送消息失败。
解决方案:确认producer主机与broker网络连接正常,防火墙等没有屏蔽相应端口。
资源限制
错误信息显示:server is busy or broken.
这可能是因为broker所在服务器资源不足,导致broker服务异常。
解决方案:检查服务器CPU、内存、磁盘等资源使用情况。如果资源使用过高,需要进行优化或升级硬件。
综上,主要有namesrv/broker地址配置错误、权限问题、网络问题和资源限制四个可能原因。
首先确认namesrv与broker的地址配置正确,并检查权限与网络连接。
如果一切正常但问题仍然存在,则很可能是服务器资源造成的。这时需要查看服务器资源使用情况并进行优化。
如果对你有启发和帮助,请采纳!
答案参考Chatgpt解答:
根据您提供的信息,错误提示表明在使用RocketMQ的Producer工具进行消息发送时出现了问题。具体错误为:
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1 DESC: create mapped file failed, server is busy or broken.
该错误可能是由于Broker服务器繁忙或存在故障导致无法创建映射文件。您可以尝试以下解决方法:
确保RocketMQ Broker服务正常运行:检查Broker服务器是否启动,并确保配置正确。
检查服务器资源使用情况:确保服务器具有足够的内存和磁盘空间,并且没有资源耗尽或超载的情况。
检查存储路径配置:根据您提供的broker配置信息,确保storePathRootDir
和storePathCommitLog
指定的路径存在并可写。
清理存储文件:尝试停止RocketMQ Broker服务,删除存储路径下的旧日志文件和消息文件,然后重新启动Broker。
调整存储配置:根据实际需求,调整存储相关的配置参数,例如flushIntervalCommitLog
、commitIntervalCommitLog
等。
检查防火墙和网络设置:确保防火墙没有阻止RocketMQ通信,并检查网络连接是否正常。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据错误信息分析,此问题可能是由于Broker磁盘空间已用尽导致的。您可以尝试查看您的Broker磁盘使用情况,尤其是CommitLog文件夹。
此外,您也可以尝试重新启动您的Broker和NameServer,可能会解决该问题。如果您的Broker正在群集中运行,还应确保所有Broker都已启动并运行正常。
以下是一个简单的RocketMQ示例代码,可用于检测您的RocketMQ环境是否正常运行,您可以尝试运行以下代码进行测试:
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;
public class RocketMQProducer {
public static void main(String[] args) {
DefaultMQProducer producer = new DefaultMQProducer("testGroup");
producer.setNamesrvAddr("localhost:9876");
try {
producer.start();
Message msg = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes());
producer.send(msg);
System.out.println("Message sent successfully.");
} catch (MQClientException | RemotingException | InterruptedException e) {
e.printStackTrace();
} finally {
producer.shutdown();
}
}
}
如果以上代码能成功向RocketMQ发送一条消息,则说明您的RocketMQ环境是正常运行的。
如果我的回答解决了您的问题,请采纳!