消费者获取消息存入RocketMQ的时间戳
时间: 2023-07-17 16:55:39 浏览: 234
消费者在接收到RocketMQ的消息时可以通过`MessageExt`对象的`getStoreTimestamp()`方法获取消息的存入时间戳。这个时间戳表示消息被存储到Broker的时间,单位是毫秒。以下是一个示例代码:
```java
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageExt;
public class RocketMQConsumerExample {
public static void main(String[] args) throws Exception {
// 创建一个消费者实例
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerGroup");
// 设置NameServer地址
consumer.setNamesrvAddr("localhost:9876");
// 订阅消息
consumer.subscribe("topic", "*");
// 注册消息监听器
consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {
for (MessageExt message : msgs) {
// 获取消息存入时间戳
long storeTimestamp = message.getStoreTimestamp();
// 打印消息存入时间戳
System.out.println("消息存入时间戳:" + storeTimestamp);
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
// 启动消费者
consumer.start();
}
}
```
上述代码中,我们创建了一个消费者实例,并设置了NameServer地址、订阅了指定主题的消息,并注册了一个消息监听器。当消费者接收到消息时,会通过消息监听器中的`MessageExt`对象获取到消息的存入时间戳,并打印出来。
这样,消费者就能获取到消息存入RocketMQ的时间戳了。请注意,这个时间戳是消息被存储到Broker的时间,而不是消息被发送的时间。
阅读全文