使用阿里的rocketMQ查询相关的坑

我们公司使用了阿里云的消息中间件进行jms消息的发送。消息发送完后,需要查看消息,虽然阿里提供了控制台,可以根据msgId和messagekey进行查询,不过,在测试环境和开发环境遇到一些情况还是需要公司自己搭建一个rocketMq的服务端,那么这个时候,我们需要查看消息的时候,就连不到阿里上面的控制台了,

但是网上开发了控制台的代码,下下来:https://github.com/rocketmq/rocketmq-console/

这个控制台的界面如下,



项目连接自己搭建的rocketMQ服务器,返回msgID在上面查询是查询不到的,因为阿里比较贱,

大家看下面这个类的

com.aliyun.openservices.ons.api.impl.rocketmq.ProducerImpl


方法

@Override
public SendResult send(Message message) {
    this.checkONSProducerServiceState(this.defaultMQProducer.getDefaultMQProducerImpl());
    com.alibaba.rocketmq.common.message.Message msgRMQ = ONSUtil.msgConvert(message);

    try {
        com.alibaba.rocketmq.client.producer.SendResult sendResultRMQ = this.defaultMQProducer.send(msgRMQ);

        SendResult sendResult = new SendResult();
        sendResult.setMessageId(sendResultRMQ.getMsgId());
        message.setMsgID(sendResultRMQ.getMsgId());
        return sendResult;
    } catch (Exception e) {
        log.error(String.format("Send message Exception, %s", message), e);
        this.checkProducerException(e, message);
        return null;
    }
}
 
 


package com.alibaba.rocketmq.client.producer;

import com.alibaba.fastjson.JSON;
import com.alibaba.rocketmq.common.message.MessageQueue;


/**
 * @author shijia.wxr<vintage.wang@gmail.com>
 * @since 2013-7-25
 */
public class SendResult {
    private SendStatus sendStatus;
    private String msgId;
    private MessageQueue messageQueue;
    private long queueOffset;
    private String transactionId;
    private String offsetMsgId;
    private String regionId;

    public SendResult() {
    }



这个类的:的

offsetMsgId 
可以在控制台进行查询,但是阿里返回给我们的是他们自己生成的msgID,他们生成msgId代码在com.alibaba.rocketmq.common.message.MessageClientIDSetter的createUniID()

import com.alibaba.rocketmq.common.message.MessageQueue;


/**
 * @author shijia.wxr<vintage.wang@gmail.com>
 * @since 2013-7-25
 */
public class SendResult {
    private SendStatus sendStatus;
    private String msgId;
    private MessageQueue messageQueue;
    private long queueOffset;
    private String transactionId;
    private String offsetMsgId;
    private String regionId;

    public SendResult() {
    }

猜你喜欢

转载自blog.csdn.net/lileronglilerong/article/details/52298710
今日推荐