目录

MQClientException: No route info of this topic, TopicTest1

异常说明

解决办法

RemotingTooMuchRequestException: sendDefaultImpl call timeout

异常说明

解决办法


MQClientException: No route info of this topic, TopicTest1

异常说明

  • 在客户端的 Producer 运行起来准备发送消息时抛异常如下
  • “ No route info of this topic ” 异常产生的原因可能是,自己当时的原因恰好是第三条:
  1. Broker 禁止自动创建 Topic,且用户没有通过手工方式创建 Topic
  2. Broker 没有正确连接到 Name Server
  3. Producer 没有正确连接到 Name Server
17:28:23.123 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest1
See http://rocketmq.apache.org/docs/faq/ for further details.at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:610)
17:28:29.595 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[] result: trueat org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1223)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1173)at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214)at com.lct.quickstart.Producer.main(Producer.java:56)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

解决办法

  • 排查1:Broker 禁止自动创建 Topic,且用户没有通过手工方式创建 Topic:
  • 可以在 Rocket_HOME/distribution/target/apache-rocketmq 下执行 " sh bin/mqbroker -m " 来查看 broker 的配置参数
  • 如下所示,autoCreateTopicEnable=true 证明是没有问题的
[root@localhost apache-rocketmq]# sh ./bin/mqbroker -m
2018-08-12 01\:27\:28 INFO main - namesrvAddr=
2018-08-12 01\:27\:28 INFO main - brokerIP1=192.168.58.129
2018-08-12 01\:27\:28 INFO main - brokerName=localhost.localdomain
2018-08-12 01\:27\:28 INFO main - brokerClusterName=DefaultCluster
2018-08-12 01\:27\:28 INFO main - brokerId=0
2018-08-12 01\:27\:28 INFO main - autoCreateTopicEnable=true
2018-08-12 01\:27\:28 INFO main - autoCreateSubscriptionGroup=true
2018-08-12 01\:27\:28 INFO main - rejectTransactionMessage=false
2018-08-12 01\:27\:28 INFO main - fetchNamesrvAddrByAddressServer=false
2018-08-12 01\:27\:28 INFO main - transactionTimeOut=3000
2018-08-12 01\:27\:28 INFO main - transactionCheckMax=5
2018-08-12 01\:27\:28 INFO main - transactionCheckInterval=60000
2018-08-12 01\:27\:28 INFO main - storePathRootDir=/root/store
2018-08-12 01\:27\:28 INFO main - storePathCommitLog=/root/store/commitlog
2018-08-12 01\:27\:28 INFO main - flushIntervalCommitLog=500
2018-08-12 01\:27\:28 INFO main - commitIntervalCommitLog=200
2018-08-12 01\:27\:28 INFO main - flushCommitLogTimed=false
2018-08-12 01\:27\:28 INFO main - deleteWhen=04
2018-08-12 01\:27\:28 INFO main - fileReservedTime=72
2018-08-12 01\:27\:28 INFO main - maxTransferBytesOnMessageInMemory=262144
2018-08-12 01\:27\:28 INFO main - maxTransferCountOnMessageInMemory=32
2018-08-12 01\:27\:28 INFO main - maxTransferBytesOnMessageInDisk=65536
2018-08-12 01\:27\:28 INFO main - maxTransferCountOnMessageInDisk=8
2018-08-12 01\:27\:28 INFO main - accessMessageInMemoryMaxRatio=40
2018-08-12 01\:27\:28 INFO main - messageIndexEnable=true
2018-08-12 01\:27\:28 INFO main - messageIndexSafe=false
2018-08-12 01\:27\:28 INFO main - haMasterAddress=
2018-08-12 01\:27\:28 INFO main - brokerRole=ASYNC_MASTER
2018-08-12 01\:27\:28 INFO main - flushDiskType=ASYNC_FLUSH
2018-08-12 01\:27\:28 INFO main - cleanFileForciblyEnable=true
2018-08-12 01\:27\:28 INFO main - transientStorePoolEnable=false
[root@localhost apache-rocketmq]#
  • 排查2:Broker 没有正确连接到 Name Server
  • 如下所示,启动 broker 的时候,只要看到了 The broker[localhost.localdomain, 192.168.58.129:10911] boot success. serializeType=JSON and name server is localhost:9876  字样就说明是成功的
[root@localhost apache-rocketmq]# nohup sh bin/mqbroker -n localhost:9876 &
[2] 3256
[1]   退出 143              nohup sh bin/mqbroker -n localhost:9876
[root@localhost apache-rocketmq]# nohup: 忽略输入并把输出追加到"nohup.out"
tail -f ~/logs/rocketmqlogs/broker.log
2018-08-11 23:48:26 INFO main - load exist subscription group, SubscriptionGroupConfig [groupName=CID_ONSAPI_OWNER, consumeEnable=true, consumeFromMinEnable=true, consumeBroadcastEnable=true, retryQueueNums=1, retryMaxTimes=16, brokerId=
2018-08-11 23:48:31 WARN main - Load default discard message hook service: DefaultTransactionalMessageCheckListener
2018-08-11 23:48:31 INFO FileWatchService - FileWatchService service started
2018-08-11 23:48:31 INFO PullRequestHoldService - PullRequestHoldService service started
2018-08-11 23:48:31 INFO brokerOutApi_thread_1 - register broker to name server localhost:9876 OK
2018-08-11 23:48:31 INFO main - Start transaction service!
2018-08-11 23:48:31 INFO main - The broker[localhost.localdomain, 192.168.58.129:10911] boot success. serializeType=JSON and name server is localhost:9876
2018-08-11 23:48:41 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2018-08-11 23:48:41 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 906412 bytes
2018-08-11 23:48:41 INFO brokerOutApi_thread_2 - register broker to name server localhost:9876 OK
  • 排查3:Producer 没有正确连接到 Name Server
  • 当时一时糊涂 Linux 上开启了 Broker 端口是 9876,然后自己并没有在防护墙中开启此端口,所以导致客户端 Producer 无论如何也连接不上
  • 如下所示,命令分别含义是:
  1. 查看防护墙开放的端口,此时没有 9876
  2. 设置防火墙开放9876 端口
  3. 重新加载 firewall,修改配置后,必须重新加载才能生效:firewall-cmd --reload
  4. 再次查看防火墙开放的端口,此时已有 9876
[root@localhost apache-rocketmq]# firewall-cmd --zone=public --list-ports
8090/tcp 80/tcp 8080/tcp
[root@localhost apache-rocketmq]# firewall-cmd --zone=public --add-port=9876/tcp --permanent
success
[root@localhost apache-rocketmq]# firewall-cmd --reload
success
[root@localhost apache-rocketmq]# firewall-cmd --zone=public --list-ports
9876/tcp 8090/tcp 80/tcp 8080/tcp
[root@localhost apache-rocketmq]#

RemotingTooMuchRequestException: sendDefaultImpl call timeout

异常说明

  • 在客户端的 Producer 运行起来准备发送消息时抛异常如下
  • 因为使用的是虚拟机,设置内存也只有1G,所以从 Windows 上开发连接 虚拟机中的 nameServer 时要经过 Linux 系统的防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会关闭这个 TCP 的会话,关闭后再读写,就有可能导致这个异常。
16:22:37.403 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
16:22:40.994 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
Exception in thread "main" org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeoutat org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:588)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1223)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1173)at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214)at com.lct.test.quickStart.Producer.main(Producer.java:28)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
16:22:41.772 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
16:23:11.770 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[] result: true

解决办法

  • 因为现在主要是熟练 RocketMQ 的 API,所以直接关闭了 Linux 的防火墙,实际中如果买的是如 阿里云的云主机,应该会好一些
[root@localhost ~]#  systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 六 2018-08-11 23:20:53 CST; 56min agoMain PID: 877 (firewalld)CGroup: /system.slice/firewalld.service└─877 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid8月 11 23:20:50 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall.....
8月 11 23:20:53 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall ...n.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#
  • 如上所示防火墙是开的,下面指令关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#  systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: inactive (dead) since 日 2018-08-12 00:19:39 CST; 2s agoProcess: 877 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)Main PID: 877 (code=exited, status=0/SUCCESS)8月 11 23:20:50 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall.....
8月 11 23:20:53 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall ...n.
8月 12 00:19:38 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall.....
8月 12 00:19:39 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall ...n.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#

RocketMQ 常见异常处理相关推荐

  1. ERP中数据导入的注意事项&常见异常处理(EDI)

    EXCEL表格注意事项: • 编码是0开头的,格式必须是文本,否则前面请加字母: • 注意全角半角,中文标点英文标点: • 编号文字类开头和结尾不要有空格,姓名中间也不要有空格: • 填写编码的地方不 ...

  2. RocketMQ 常见面试问题

    一.使用RocketMQ如何保证消息不丢失? 这个是在面试时,关于MQ,面试官最喜欢问的问题.这个问题是所有MQ都需要面对的一个共性问题.大致的解决思路都是一致的,但是针对不同的MQ产品又有不同的解决 ...

  3. Java常见异常处理

    异常(exception)是在运行程序时产生的一种异常情况,已经成为了衡量一门语言是否成熟的标准之一. 异常简介 Java 中的异常又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常 ...

  4. 接口调用常见异常处理方案

    一个远程服务器会暴露各种各样的对外服务,我们称之为service1 2 3 某个客户端会调用其中某个service,在不出异常的情况下服务可能会很稳定, 但是一旦出现了异常,如果没有良好的异常处理机制 ...

  5. java socket 异常处理_Java Socket常见异常处理 和 网络编程需要注意的问题

    在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发 ...

  6. Lombok 常见异常处理

    javax.annotation.resource无法导入 确保配置的JDK的版本是1.8 Lambda expressions are not supported at language level ...

  7. Java代码中常见技术债务处理之Exception

    写在前面 异常处理是代码中常见的处理,本文根据SonarQube在异常方面的规则和常见检查结果,选取说明了常见异常处理中的技术债务,提倡技术债务最少的编码方式. Exception handlers ...

  8. python宇晨_Python 学习第11天 yield 和异常处理

    主要功能:把一个函数变成生成器 复习:将列表变成生成器a=iter([i for i in range(10)]) a.next() 使用yield将函数变成生成器,保存函数执行状态 yield简单代 ...

  9. rocketmq 顺序消费_RocketMQ核心概念扫盲

    在正式进入RocketMQ的学习之前,我觉得有必要梳理一下RocketMQ核心概念,为大家学习RocketMQ打下牢固的基础. 1.RocketMQ部署架构 在RocketMQ主要的组件如下: Nam ...

  10. django 框架模型之models常用的Field,这些Field的参数、及常见错误原因及处理方案。

    1. django 模型models 常用字段 1.models.AutoField 自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列 如果要显式的自定义一个自增列,必须设置 ...

最新文章

  1. 2022-2028年中国废矿物油行业市场研究及前瞻分析报告
  2. C# SQL封装(一)
  3. Linux下往移动硬盘拷贝数据步骤方式
  4. excel简繁切换_EXCEL中如何随意切换简体繁体文字
  5. c#如何通过ftp上传文件_ftp自动上传工具,ftp自动上传工具如何自动上传文件
  6. linux VIRT内存占太大,Java top VIRT 内存占用有关问题
  7. C语言一个小小的问题引起的对指针的探究。。。
  8. 图(关系网络)数据分析及阿里应用
  9. 小世界网络模型代码 c 语言,新的小世界网络模型实现文本特征的提取方法与流程...
  10. vue - 自定义指令
  11. Rust 修复隐秘的ReDoS 漏洞
  12. python和java哪个好-Python和Java哪个好?有什么区别?
  13. mysql 5.1.3_1.1.1 MySQL5.5默认存储引擎的调整(3)
  14. 北大学子求职经历与建议(IT类) 收藏
  15. matlab 一阶惯性环节,一阶惯性环节
  16. 《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——第2章 生产模式和计划策略 2.1 计划策略与需求类型总览...
  17. 全栈项目-乐优商场-通用工具服务-通用异常处理
  18. springMVC中415错误
  19. amoeba mysql binary_amoeba安装与实现amoeba for mysql读写分离
  20. 拇指玩安装器提示“存储卡空间不足”的解决办法

热门文章

  1. 证明三角形内角和等于180度
  2. fastjson jsonobject 转bean失败_挂面这么做,零失败,口感还是一顶一的棒
  3. 证明n次根号下n阶乘等价于n/e
  4. 2021年3月计算机语言排名,2021年3月编程语言排行榜:TOIBE将迎来重大改变,SQL如愿挤进前十...
  5. 调用sklearn库--分类学习
  6. solver.prototxt参数解析
  7. kNN算法__手写识别——基于Python和NumPy函数库
  8. yolobile 道路损坏检测实战
  9. Simhash算法原理和网页查重应用
  10. ubuntu安装mysql失败怎么删除_Ubuntu 14.04卸载安装失败的Mysql数据库,以及重新安装配置...