开发者社区 问答 正文

rocketmq发送消息报错——not exist, apply first please

确定broker连上了nameserver,消费者没连上nameserver,请问如何解决 报错信息——

org.apache.rocketmq.client.exception.MQBrokerException: CODE: 17  DESC: topic[order-group] not exist, apply first please!

消费者设置

DefaultMQProducer producer = new DefaultMQProducer("order-group");
        producer.setNamesrvAddr("127.0.0.1:9876");
        producer.setCreateTopicKey("order-topic");
        producer.setSendMessageWithVIPChannel(false);
        producer.setInstanceName(System.currentTimeMillis()+"");
        producer.start();
        System.out.println(producer.getCreateTopicKey());

展开
收起
游客x6vj2wvqljltm 2020-12-15 11:00:22 3981 分享 版权
阿里云 AI 助理回答

根据您提供的错误信息和代码片段,问题出在消费者尝试从一个不存在的topic接收消息。报错信息DESC: topic[order-group] not exist, apply first please!表明RocketMQ没有找到名为order-group的topic。但实际上,order-group看起来像是您设置的消费者组名而非topic名称。请确保您使用正确的topic名称进行配置。

要解决这个问题,请按照以下步骤操作:

  1. 确认Topic名称:首先,确保您知道正确的topic名称,并非消费者组名。如果尚未创建该topic,您需要先在nameserver上创建它。可以通过RocketMQ的管理工具或者API来创建topic。

  2. 修改消费者代码:在您的消费者代码中,应该指定正确的topic名称而不是消费者组名。例如,如果您正确的topic名称是OrderTopic,那么应该这样设置:

    // 假设正确的topic名称为"OrderTopic"
    String topic = "OrderTopic";
    
    DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("order-group"); // 这里是消费者组名
    consumer.setNamesrvAddr("127.0.0.1:9876");
    
    // 设置订阅的topic和tag(如果使用tag的话)
    consumer.subscribe(topic, "*"); // 或者具体的tag如"TAG_A"
    
    consumer.registerMessageListener(...); // 注册消息监听器处理逻辑
    
    consumer.start();
    System.out.printf("Consumer Started.%n");
    
  3. 检查Nameserver连接:虽然您提到broker已成功连接到nameserver,但请确保消费者的nameserver地址配置正确且nameserver服务运行正常。您可以通过telnet命令简单测试一下nameserver的端口是否可通,比如telnet 127.0.0.1 9876

  4. 查看RocketMQ日志:检查RocketMQ的broker、consumer以及nameserver的日志文件,这些日志通常能提供更详细的错误信息,帮助定位问题。

  5. 创建Topic:如果确定topic确实未被创建,您可以通过RocketMQ提供的命令行工具mqadmin来创建topic。例如:

    sh mqadmin updateTopic -c DefaultCluster -t YourTopicName -n 127.0.0.1:9876
    

    或者通过管理控制台(如果使用的是阿里云的RocketMQ服务)直接创建。

请按照上述步骤检查并调整配置,这应该能帮助您解决消费者无法连接到nameserver或找不到topic的问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答