SpringBoot集成RocketMQ及报错处理

本文介绍了在SpringBoot中集成RocketMQ时遇到的两个主要问题及其解决方案。首先,由于未配置`autoCreateTopicEnable`,导致发送消息时出现`NoRouteInfoOfThisTopic`异常,通过在broker.conf配置文件中启用自动创建主题解决了此问题。其次,发送消息超时的问题,通过增加`rocketmq.producer.send-message-timeout`配置项,增大了发送超时时间,从而避免了`RemotingTooMuchRequestException`。此外,还展示了SpringBoot的相关配置和pom.xml中的依赖信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot集成RocketMQ及报错处理

项目场景:

  • 【说明】:springBoot集成RocketMQ开发
  • 【环境】:阿里云+Centos8+RocketMQ+SpringBoot+Docker
  • 【启动】:docker start rmqserver rmqbroker[因为RocketMQ安装在Docket容器中,所以这样启动]

服务器broker.conf配置信息:

brokerIP1=外网ip
namesrvAddr=外网ip:9876
brokerName=broker_tanhua
autoCreateTopicEnable=true
  • 【说明】:1.brokerIP1 当前broker监听的IP
    2.Broker是RocketMq的核心,负责消息的传递(提供者=》消费者)以及消息的持久化存储,消息的HA机制以及服务器过滤功能。
    3.autoCreateTopicEnable:自动创建Topic路由

问题一描述:

  • 【说明】:我第一次配置时,broker.conf配置文件中没有配置autoCreateTopicEnable,因此在程序运行时会提示没有路由信息:No route info of this topic: tanhua-sso-login
  • 【说明】我发送消息路由名字是tanhua-sso-login
    在这里插入图片描述

错误信息:

  • 【错误信息】:
No route info of this topic: tanhua-sso-login
  • 【错误信息截图】:我没有截图网上找了一个,差不多
    在这里插入图片描述

解决方式:

  • 【说明】:我当时也在网上找了很多,有在启动时添加自动创建的也有说防火墙开启的原因,但是我感觉会这个的话应该都知道关防火墙。在启动时添加自动创建可能也好使,但是我没试过,因为我在搜索时发现问题统一指向说没有自动创建,因此我想的是直接在配置文件中进行修改,然后重启
  • 【解决方式】:在broker.conf配置文件中添加如下配置:
autoCreateTopicEnable=true

SpringBoot集成信息:

  • 【application.properties】:
# RocketMQ相关配置
rocketmq.nameServer=外网IP:9876
rocketmq.producer.group=tanhua
rocketmq.producer.send-message-timeout= 6000
  • 【注】:这里配置的开通没有spring,我之前加spring怎么也连接不上
  • 【pom.xml】:
<!--RocketMQ相关-->
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-spring-boot-starter</artifactId>
                <version>2.0.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-client</artifactId>
                <version>4.5.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-common</artifactId>
                <version>4.5.1</version>
            </dependency>

问题二描述:

  • 【说明】:我在修改上面的错误后,紧接着又报
  • 【错误信息】:
    RemotingTooMuchRequestException: sendDefaultImpl call timeout
  • 【错误信息截图】:也是没有截图网上找了一个,差不多
    在这里插入图片描述
    *【思路】:错误信息中提示call timeout,timeout一般想到到时连接或响应超时,因此在网上找到的是在发送MQ时出错,网上解决方案是:修改Mq配置文件中的sendMsgTimeout,因此想到修改可以修改SpringBoot连接MQ时的配置设置
  • 【解决方案】:添加rocketmq.producer.send-message-timeout= 6000
  • 【说明】:给大一点发送信息超时时间。
    *【说明】:同时在SpringBoot集成RoctetMQ配置中没有sendMsgTimeout因此用rocketmq=>输入’.’=>输入sendtimeout=>查看有哪些关于这个的配置。
    *【完整配置】:
# RocketMQ相关配置
rocketmq.nameServer=外网IP:9876
rocketmq.producer.group=tanhua
rocketmq.producer.send-message-timeout= 6000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值