RocketMQ异常(一)

本文针对RocketMQ在使用过程中遇到的主题创建异常问题进行了详细分析。通过检查Broker启动参数、确认Broker与NameServer的连接状态及调整代码中NameServer地址配置等步骤,成功解决了Norouteinfoforthistopic错误。

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

RocketMQ异常(一)

org.apache.rocketmq.client.exception.MQClientException: No route info for this topic, TopicTestjjj

  • 根据官方文档配置的MQ,并且复制的示例代码,但是运行就报错了。
  • 参考了很多博客得出以下三种结论

    1. Broker没有开启自动创建主题
    2. Broker 没有正确连接到 Name Server
    3. Producer 没有正确链接到Name Server
  • 第一步 查看启动方式是否正确
    nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
    官方给的是
    nohup sh bin/mqbroker -n localhost:9876 &
    然后执行
    sh bin/mqbroker -m

    chenchenghao@cch:/soft/apache-rocketmq$ sh bin/mqbroker -m
    2018-09-03 23:10:27 INFO main - namesrvAddr=
    2018-09-03 23:10:27 INFO main - brokerIP1=192.168.0.111
    2018-09-03 23:10:27 INFO main - brokerName=cch
    2018-09-03 23:10:27 INFO main - brokerClusterName=DefaultCluster
    2018-09-03 23:10:27 INFO main - brokerId=0
    2018-09-03 23:10:27 INFO main - autoCreateTopicEnable=true
    2018-09-03 23:10:27 INFO main - autoCreateSubscriptionGroup=true
    2018-09-03 23:10:27 INFO main - rejectTransactionMessage=false
    2018-09-03 23:10:27 INFO main - fetchNamesrvAddrByAddressServer=false
    2018-09-03 23:10:27 INFO main - transactionTimeOut=3000
    2018-09-03 23:10:27 INFO main - transactionCheckMax=5
    2018-09-03 23:10:27 INFO main - transactionCheckInterval=60000
    2018-09-03 23:10:27 INFO main - storePathRootDir=/home/chenchenghao/store
    2018-09-03 23:10:27 INFO main - storePathCommitLog=/home/chenchenghao/store/commitlog
    2018-09-03 23:10:27 INFO main - flushIntervalCommitLog=500
    2018-09-03 23:10:27 INFO main - commitIntervalCommitLog=200
    2018-09-03 23:10:27 INFO main - flushCommitLogTimed=false
    2018-09-03 23:10:27 INFO main - deleteWhen=04
    2018-09-03 23:10:27 INFO main - fileReservedTime=72
    2018-09-03 23:10:27 INFO main - maxTransferBytesOnMessageInMemory=262144
    2018-09-03 23:10:27 INFO main - maxTransferCountOnMessageInMemory=32
    2018-09-03 23:10:27 INFO main - maxTransferBytesOnMessageInDisk=65536
    2018-09-03 23:10:27 INFO main - maxTransferCountOnMessageInDisk=8
    2018-09-03 23:10:27 INFO main - accessMessageInMemoryMaxRatio=40
    2018-09-03 23:10:27 INFO main - messageIndexEnable=true
    2018-09-03 23:10:27 INFO main - messageIndexSafe=false
    2018-09-03 23:10:27 INFO main - haMasterAddress=
    2018-09-03 23:10:27 INFO main - brokerRole=ASYNC_MASTER
    2018-09-03 23:10:27 INFO main - flushDiskType=ASYNC_FLUSH
    2018-09-03 23:10:27 INFO main - cleanFileForciblyEnable=true
    2018-09-03 23:10:27 INFO main - transientStorePoolEnable=false
    chenchenghao@cch:/soft/apache-rocketmq$ 
    
  • 第二步 查看Broker 有没有正确连接到 Name Server
    Broker启动后,项目启动成功,看到add borker success 就是对的

  • 第三步 查看是否有防火墙
    博主这里并没有开启防火墙 但是依然在报这个错,后来我就怀疑官方给的demo代码有问题
    最终发现没有配置NamesrvAddr。
    这个真心坑!!!
    修改代码新增producer.setNamesrvAddr(“localhost:9876”);

注意本文主要参考了以下博客https://blog.youkuaiyun.com/wangmx1993328/article/details/81588217

### RocketMQ 定义及其主要特点 RocketMQ款由阿里巴巴开发并贡献给 Apache 基金会的开源分布式消息传递和流处理平台。它因其卓越的性能、高可用性、高可靠性和灵活的扩展性而在业界广受认可。 #### 性能表现 RocketMQ 提供了极高的吞吐能力和低延迟响应时间,适用于大规模数据传输场景[^1]。这种高性能得益于其底层设计优化以及对硬件资源的有效利用。 #### 可靠性保障 为了确保系统的稳定运行,RocketMQ 支持严格的消息顺序保证,即在生产者到消费者之间维持消息的时间序列致性[^2]。这特性对于金融交易、订单管理等需要强致性的业务尤为重要。 #### 扩展灵活性 该系统允许通过增加更多的节点来实现水平方向上的容量扩充,从而支持更高的请求负载。具体来说,它可以高效地进行订阅者的水平扩展,以便更好地适应不断增长的数据流量需求。 #### 实时通信能力 具备即时通知的功能使得 RocketMQ 能够迅速将新产生的事件推送给相应的接收方,这对于直播互动或者在线客服这类强调时效的应用非常有价值。 #### 大规模消息存储 拥有强大的消息堆积处理能力,即使在网络状况不佳或其他异常情况下也能保存海量未被及时消费的信息直到它们最终得到妥善处置为止。 #### 数据安全措施 采用同步双写的策略,在多个副本间同时记录相同的内容以防止因单组件失效而导致整体服务中断的情况发生;虽然这种方法可能会稍微降低效率但是极大地提高了整个架构的安全等级[^4]。 ```python from rocketmq.client import Producer, Message producer = Producer('my_producer_group') producer.set_name_server_address('localhost:9876') producer.start() msg = Message('TopicTest') msg.set_keys('Key') msg.set_body('Message body') ret = producer.send_sync(msg) print(f'Send Result: {ret.status}') producer.shutdown() ``` 上述代码片段展示了如何使用 Python SDK 向 RocketMQ 发送条同步消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值