如何设置rockemq消息过期时间?
How to set rockemq message expired time?
这里我使用spring-cloud-starter-stream-rocketmq和spring-message发送消息dn,
例如
Message m = MessageBuilder.withPayload(obj).setHeader(RocketMQHeaders.TAGS, tag).build();
MessageChannel.output().send(m);
但是我想在队列中设置消息过期时间,如果没有被消费
我知道rocketmq可以设置ttl,但是我不知道是否可以针对不同的消息设置,以及如何在之前的代码中使用?
恐怕你错了。
RocketMQ不支持ttl,这意味着消息不会被客户端参数控制删除,但消息确实会在一段时间后(例如7天)被删除。
所以如果你需要像消费一样实现 ttl,你应该在你的消费者中这样做:
if (System.currentTimeMills()-msg.getStoreTimestamp > SOME_TIME) {
//DO NOT CONSUME
}
这里我使用spring-cloud-starter-stream-rocketmq和spring-message发送消息dn, 例如
Message m = MessageBuilder.withPayload(obj).setHeader(RocketMQHeaders.TAGS, tag).build();
MessageChannel.output().send(m);
但是我想在队列中设置消息过期时间,如果没有被消费
我知道rocketmq可以设置ttl,但是我不知道是否可以针对不同的消息设置,以及如何在之前的代码中使用?
恐怕你错了。
RocketMQ不支持ttl,这意味着消息不会被客户端参数控制删除,但消息确实会在一段时间后(例如7天)被删除。
所以如果你需要像消费一样实现 ttl,你应该在你的消费者中这样做:
if (System.currentTimeMills()-msg.getStoreTimestamp > SOME_TIME) {
//DO NOT CONSUME
}