0

这里我使用 spring-cloud-starter-stream-rocketmq 和 spring-message 来发送消息 dn,例如

Message m = MessageBuilder.withPayload(obj).setHeader(RocketMQHeaders.TAGS, tag).build();
MessageChannel.output().send(m);

但是如果没有消耗,我想在队列中设置消息过期时间。

我知道rocketmq可以设置ttl,但我不知道是否可以为不同的消息设置以及如何在之前的代码中使用?

4

1 回答 1

1

我怕你错了。

RocketMQ 不支持 ttl,这意味着消息不会被客户端参数控制删除,尽管消息确实会在一段时间后(例如 7 天)被删除。

因此,如果您需要实现类似消费的 ttl,您应该在您的消费者中执行它,例如:

  if (System.currentTimeMills()-msg.getStoreTimestamp > SOME_TIME) {
     //DO NOT CONSUME
  }
于 2021-02-08T03:07:43.080 回答