要查看延时消息是否成功发送,可以通过 RocketMQ 的 Admin API 来查询。具体步骤如下:

  1. 获取 RocketMQ 的消息管理器(MessageClient)对象。
  2. 使用消息管理器的'queryMessageByTopic'方法,传入要查询的主题名和开始时间戳,可以获取到该主题下的所有消息。
  3. 遍历查询结果,判断消息是否延时发送。可以通过消息的'getDelayTimeLevel'方法获取消息的延时级别,如果延时级别大于 0,则说明是延时发送的消息。

以下是一个示例代码:

import org.apache.rocketmq.client.QueryResult;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.MessageClient;
import org.apache.rocketmq.client.producer.QueryMessageRequest;
import org.apache.rocketmq.client.producer.QueryMessageResponse;
import org.apache.rocketmq.client.producer.QueryMessageResult;
import org.apache.rocketmq.common.message.MessageExt;

public class RocketMQDelayMessageChecker {

    public static void main(String[] args) throws MQClientException {
        // 创建消息管理器
        MessageClient messageClient = new MessageClient('your_group_name');

        // 构造查询请求
        QueryMessageRequest request = new QueryMessageRequest();
        request.setTopic('your_topic_name');
        request.setBeginTimestamp(System.currentTimeMillis() - 24 * 60 * 60 * 1000); // 查询过去一天的消息

        // 查询消息
        QueryMessageResult result = messageClient.queryMessage(request);

        // 处理查询结果
        if (result != null && result.getMessageList() != null) {
            for (MessageExt message : result.getMessageList()) {
                // 判断消息是否延时发送
                if (message.getDelayTimeLevel() > 0) {
                    System.out.println('延时消息:' + message);
                }
            }
        }
    }
}

上述代码中,'your_group_name'是消费者组的名称,'your_topic_name'是要查询的主题名称。'setBeginTimestamp'方法设置开始查询的时间戳,这里设置为过去一天的时间。

运行以上代码,即可查看延时发送的消息。


原文地址: https://www.cveoy.top/t/topic/phpc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录