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

Apache大佬们,有没有基于RocketMQTemplate实现同步调用的例子:生产端发消息,消?

问题1:Apache大佬们,有没有基于RocketMQTemplate实现同步调用的例子:生产端发消息,消费端同步返回? 问题2:跑起来报这个错:CODE: 10007 DESC: create reply message fail, requestMessage error, property[CLUSTER] is null是不是版本问题,我安装4.3.2? 确认是版本问题。改到5.0.0就OK了

展开
收起
cuicuicuic 2023-06-18 18:40:40 75 0
3 条回答
写回答
取消 提交回答
  • 问题1:基于RocketMQTemplate实现生产端发消息,消费端同步返回的例子:

    生产端代码示例:

    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    
    public String sendMessageSync(String topic, String message) {
        Message<String> msg = MessageBuilder.withPayload(message).build();
        SendResult sendResult = rocketMQTemplate.syncSend(topic, msg);
        return sendResult.getSendStatus().toString();
    }
    

    消费端代码示例:

    @RocketMQMessageListener(topic = "your-topic", consumerGroup = "your-consumer-group")
    public class MyConsumer implements RocketMQListener<MessageEntity> {
    
        @Override
        public void onMessage(MessageEntity message) {
            // 消费处理逻辑
            // 同步返回结果可以通过返回值或者回调方式实现
        }
    }
    

    在生产端,使用RocketMQTemplate的syncSend方法同步发送消息,并通过SendResult获取发送结果。

    在消费端,通过实现RocketMQListener接口的onMessage方法来处理接收到的消息。可以在该方法中编写消费逻辑,并根据需要返回结果。

    问题2:报错"CODE: 10007 DESC: create reply message fail, requestMessage error, property[CLUSTER] is null"

    这个错误通常是由于版本不兼容导致的。在RocketMQ 4.3.2版本中,该错误可能会出现。你已经确认将版本升级到5.0.0后问题解决了,这表明确实是版本问题。

    建议在使用RocketMQ时,尽量使用最新稳定版本,以获得更好的稳定性和功能支持。在升级版本之前,可以查看RocketMQ的官方文档或升级指南,了解新版本的变更和注意事项。

    2023-06-20 23:16:54
    赞同 展开评论 打赏
  • 在 Apache RocketMQ 中,可以使用 RocketMQTemplate 实现同步发送消息和消费消息的功能。下面是一个基本的示例代码:

    // 生产者端发送消息
    @Service
    public class ProducerService {
        @Autowired
        private RocketMQTemplate rocketMQTemplate;
      
        public String sendSyncMessage(String topic, String message) {
            // 同步发送消息
            SendResult sendResult = rocketMQTemplate.syncSend(topic, message);
            // 返回消息 ID
            return sendResult.getMsgId();
        }
    }
    
    // 消费者端消费消息
    @Component
    @RocketMQMessageListener(consumerGroup = "consumer_group", topic = "test_topic")
    public class ConsumerService implements RocketMQListener<String> {
    
        @Override
        public void onMessage(String message) {
            // 处理消息
            System.out.println("Received message: " + message);
        }
    }
    

    在上述示例中,生产者通过 RocketMQTemplatesyncSend 方法同步发送消息到指定 Topic,同时返回消息 ID。消费者通过实现 RocketMQListener 接口并定义消费者 Group 和 Topic,来监听并处理消息。

    需要注意的是,在使用 RocketMQTemplate 进行同步调用时,建议合理设置超时时间和重试机制,以避免长时间等待或者因网络等原因导致的异常情况。另外,在消费者处理消息时也需要注意消息确认和消费过滤等问题,以提高系统稳定性和可靠性。

    2023-06-18 21:14:31
    赞同 展开评论 打赏
  • 问题1:https://github.com/apache/rocketmq-spring/wiki/%E8%AF%B7%E6%B1%82-%E5%BA%94%E7%AD%94%E8%AF%AD%E4%B9%89%E6%94%AF%E6%8C%81 问题2:这里示例应该写错了吧image.png ,此回答整理自钉群“群1-Apache RocketMQ 中国开发者钉钉群”

    2023-06-18 18:48:59
    赞同 展开评论 打赏
问答分类:
问答标签:

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

热门讨论

热门文章

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像