美文网首页
第四章 RocketMQ 延时消息

第四章 RocketMQ 延时消息

作者: 原水寒 | 来源:发表于2022-05-21 18:59 被阅读0次

使用场景:

  1. 比如电商里,提交了一个订单就可以发送一个延时消息,1h后去检查这个订单的状态,如果还是未付款就取消订单释放库存。
  2. 消息消费失败的重试机制:消费失败会进入延时消息队列,Broker消息发送时间与设置的延时等级和重试次数有关,详见代码 SendMessageProcessor.java

使用限制:不支持任意时间的延时,需要设置几个固定的延时等级,从1s到2h分别对应着等级1到18消息。相见:MessageStoreConfig.java

// org/apache/rocketmq/store/config/MessageStoreConfig.java
private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";

一、延时消息发送

      // 实例化一个生产者来产生延时消息
      DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup");
      // 启动生产者
      producer.start();
      int totalMessagesToSend = 100;
      for (int i = 0; i < totalMessagesToSend; i++) {
          Message message = new Message("TestTopic", ("Hello scheduled message " + i).getBytes());
          // 设置延时等级3,这个消息将在10s之后发送(现在只支持固定的几个时间,详看delayTimeLevel)
          message.setDelayTimeLevel(3);
          // 发送消息
          producer.send(message);
      }

二、延时消息消费

普通消费方式。

参考

RocketMQ 基本样例

相关文章

网友评论

      本文标题:第四章 RocketMQ 延时消息

      本文链接:https://www.haomeiwen.com/subject/cwjmurtx.html