RocketMQ支持哪些消息传递模式?

RocketMQ支持以下主要的消息传递模式:

  1. 同步发送:Producer 发送消息并等待 Broker 的响应。如果消息发送成功或失败,Broker 会返回响应结果给 Producer。
SendResult sendResult = producer.send(msg);
  1. 异步发送:Producer 发送消息但不等待 Broker 的响应。这种模式吞吐量最高,但无法保证消息是否成功发送。
producer.sendOneway(msg);
  1. 单向发送:类似异步发送,Producer 不等待响应,但 RocketMQ 会在后台返回发送结果给 Producer。Producer 需要实现 SendCallback 接口并指定回调方法。
producer.send(msg, new SendCallback() {
    @Override
    public void onSuccess(SendResult sendResult) {
        // 消息发送成功回调逻辑 
    }
    @Override
    public void onException(Throwable e) {
        // 消息发送失败回调逻辑
    }
});
  1. 顺序消息:严格控制消息的消费顺序。同一个 Producer Group 内,消息的消费顺序按照消息的发送顺序一致。
// 发送顺序消息
Message msg = new Message("TopicTest", "TagA", "OrderID001", "Hello".getBytes());
SendResult sendResult = producer.send(msg);

// 设置消费者组以消费顺序消息
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroup1");
  1. 定时消息:消息发送或消费的时间可以延迟一定时间,用来解决定时任务的场景。
// 2秒后发送消息
Message msg = new Message("TopicTest", "TagA", "OrderID001", "Hello".getBytes());
msg.setDelayTimeLevel(2);
producer.send(msg);  

RocketMQ通过不同的消息传递模式,可以解决定时任务、异步解耦、削峰填谷等常见需求。熟练掌握这些模式,可以让我们在项目开发中灵活使用RocketMQ解决更丰富的业务场景。