org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException

异常信息

org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

开发环境描述

rocketMq 版本是 4.9.0,部署在服务器主机上, Broker 部署为单节点(单机)模式,本地需要挂载VPN,和主机进行通信。

NameServer 和 broker 的启动都是默认的启动命令。

已安装 RocketMQ Dashboard 进行管理,页面确实比较方便。

排查过程

SpringBoot 整合 RocketMq 一个demo程序,进行简单的生产和消费。

搭建了本地 RocketMq 以及 RocketMQ Dashboard,测试正常。

但是只要配置服务器的 NameServer 地址,就抛出上面的异常,查看broker日志并没有相关的日志,推断是网络通讯有问题,也就是客户端和 broker 就没有建立正常的连接。

通过 RocketMQ Dashboard 查看 Cluster 信息,发现 broker 的地址根本就不是服务器主机的地址,网络也是不通的(telnet 测试),基本上就确定了问题所在。

错误原因解析

NameServer 是 RocketMQ 中的另一个关键组件,用于管理 Broker 的地址信息。

Broker 是 RocketMQ 中负责存储和传递消息的组件,而 Producer 和 Consumer 分别是生产和消费消息的客户端。

简单的说 NameServer 是一个注册中心,Producer 和 Consumer 不直接与 Broker 通信,而是通过 NameServer 发现 Broker 的地址。

在一些云服务提供商的环境中,Broker 地址可能会被动态分配,而不需要手动配置。这通常是通过云服务平台的服务发现机制实现的。

也就是说如果没有配置 Broker,那么 IP:PORT 就由主机进行分配。

所以呢,需要手动配置 Broker,指定 IP:PORT ,然后重启 Broker 就可以测试了。

解决和测试

Broker的配置文件在:/your_rocktMq_install_path/conf/broker.conf

手动配置broker的地址和端口:

复制代码
#手动分配地址
brokerIP1= your_ip
listenPort=10911

重启 Broker

bash 复制代码
cd /your_rocktMq_install_path/
# 停止broker
sh bin/mqshutdown broker
# 启动broker
nohup sh bin/mqbroker -n [your_namesever_url]:[port] -c /your_rocktMq_install_path/conf/broker.conf &

通过 RocketMQ Dashboard 查看 broker 的地址信息,应该已经是你配置的ip和端口了,进行测试,基本上就ok了。

综述: 就是一个网络通信问题,当然了,可能也有其他的原因。

相关推荐
Rain的Java大神之路5 小时前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq
闲云野鹤在人间11 小时前
项目实战:LNMP-电商平台-ECshop
linux·运维·nginx·apache·lvs
隔窗听雨眠11 小时前
湖仓一体架构深度解读:Apache Doris如何打破数据边界实现查询提速30倍
架构·apache
南城以南溫暖如初14712 小时前
社区健身小程序开发流程详解:技术选型与实施经验分享
java·经验分享·spring boot·mysql·vue·apache
北极糊的狐13 小时前
钉钉小程序接入若依(只做增删改查,先不管工作台免登)
apache
SelectDB技术团队1 天前
阶跃星辰 Agent 可观测:Apache Doris / SelectDB 的技术能力与实践
django·apache·知识图谱
万岳科技系统开发2 天前
医疗诊所小程序如何实现患者管理和会员运营?
java·小程序·apache
hopsky2 天前
《RocketMQ 技术内幕:RocketMQ 架构设计与实现原理》核心内容详解
rocketmq
小园子的小菜4 天前
RocketMQ 核心原理、架构优势与核心机制全解
架构·rocketmq
行业研究员6 天前
腾讯位置服务核心功能与应用场景解析
apache·lbs·腾讯位置服务