【RocketMQ-Bug】RocketMQ 在使用中的常见问题

发布时间:2023年12月20日

这些异常都建立在亲测的基础上,后续有新异常会继续补充。

1)Producer 运行起来发送消息时抛出异常: No route info of this topic

1、broker 上不存在该 topic,创建该 topic 即可;注意:测试环境 topic 都是自动创建,偶尔会出现创建异常情况,使用手动创建保证创建成功;

2、broker 没有正确链接到name server上;

3、producer 没有正确连接到name server上;

2)RemotingTimeoutException: wait response on the channel timeout, xxx(ms)

1、这个异常本质就是 rpc 调用超时,rocket 的 rpc 请求都是异步的。这个异常表示发送成功后等待响应超过了最大等待时间。可能是有人发送了大消息,或者 rocket 发生了波动。可以适当的调整最大超时时间:setSendMsgTimeout

2、创建实例时,如果开启了 SSL,请开启 SSL:

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

public class Main {
    public static void main(String[] args) {
        DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
        //填入连接地址
        producer.setNamesrvAddr("192.168.0.1:8100");
        producer.setUseTLS(true); //创建实例时,如果开启了SSL,请添加此行代码。
        try {
            producer.start();
            Message msg = new Message("TopicTest",
                "TagA",
                "OrderID188",
                "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);

        } catch (Exception e) {
            e.printStackTrace();

        }
        producer.shutdown();
    }
}

3)RemotingTooMuchRequestException: sendDefaultImpl call timeout

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

基本上是 ip 或网络的问题

可以尝试的解决方案:

1、首先来到rocketmq目录下,修改conf文件夹下broker.conf 文件当中的配置

vim conf/broker.conf 

2、来到配置文件后在文件最后加上如下配置:

brokerIP1=101.200.xxx.xxx   #这里的ip地址修改成自己服务器的ip地址
autoCreateTopicEnable=true

3、如果正在运行mqnamesvr还有mqbroker的话,需要先shutdown它们

#停止broker,这里是在rocketmq目录下,不是在bin目录下
sh bin/mqshutdown broker
#停止namesvr
sh bin/mqshutdown namesrv

4、重新运行mqnamesvr和mqbroker

#后台启动namesvr,这里的IP地址记得更换为自己的服务器
nohup sh bin/mqnamesrv  -n "101.200.xxx.xxx:9876" &

#后台运用刚刚更改的配置文件启动mqbroker
nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf autoCreateTopicEnable=true &

这些步骤做完之后在运行一下程序估计就不会有什么大问题了!当然以上都是建立在你的程序没有问题的基础上!

文章来源:https://blog.csdn.net/weixin_53543905/article/details/135077743
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。