开发者社区 > 云原生 > 云消息队列 > 正文

使用rocketmq-client-java发不了消息

使用的是如下代码发送消息,调试时发现代码一直停留在
Producer producer = provider.newProducerBuilder().setTopics(topic).setClientConfiguration(config).build();

public void sendMessage(String topic, String messageData){
    try{
        ClientServiceProvider provider = ClientServiceProvider.loadService();
        // 配置accessKey和secretKey
        StaticSessionCredentialsProvider sscProvider = new StaticSessionCredentialsProvider(accessKey, secretKey);
        ClientConfiguration config = ClientConfiguration.newBuilder()
                .setEndpoints(endpoints)
                .setRequestTimeout(Duration.ofSeconds(requestTimeout))
                .setCredentialProvider(sscProvider)
                .enableSsl(enableSsl)
                .build();

        // 设置生产者
        Producer producer = provider.newProducerBuilder()
                .setTopics(topic)
                .setClientConfiguration(config)
                .build();

        // 设置普通消息
        Message message = provider.newMessageBuilder()
                .setTopic(topic)
                .setBody(messageData.getBytes(StandardCharsets.UTF_8))
                .build();
        // 获取发送消息的结果
        SendReceipt sendReceipt = producer.send(message);
        log.info("发送消息的结果:{}",sendReceipt.toString());
    }catch(Exception e){
        log.error("发送消息出现异常:{}",e.toString());
    }
}

展开
收起
雪候鸟666 2024-09-12 21:27:05 29 1
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长
    Producer producer = provider.newProducerBuilder().setTopics(topic).setClientConfiguration(config).build();
    

    确保endpoints配置正确,应指向您的RocketMQ服务实际地址。
    accessKey与secretKey需有效,且具有向指定topic发送消息的权限。
    请求超时时间requestTimeout设置合理,避免因网络延迟导致的建立连接超时。

    2024-09-13 13:34:07
    赞同 107 展开评论 打赏
问答分类:

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载