我们公司使用了阿里云的消息中间件进行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() { }