Apache大佬们,有没有基于RocketMQTemplate实现同步调用的例子:生产端发消息,消?[阿里云消息队列MQ]

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 问题1:基于RocketMQTemplate实现生产端发消息,消费端同步返回的例子:

    生产端代码示例:

    @Autowiredprivate RocketMQTemplate rocketMQTemplate;public String sendMessageSync(String topic, String message) {    Message 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 {    @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的官方文档或升级指南,了解新版本的变更和注意事项。

  2. 在 Apache RocketMQ 中,可以使用 RocketMQTemplate 实现同步发送消息和消费消息的功能。下面是一个基本的示例代码:

    // 生产者端发送消息@Servicepublic 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 {    @Override    public void onMessage(String message) {        // 处理消息        System.out.println("Received message: " + message);    }}

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

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