fibbery commented on issue #572: URL: https://github.com/apache/rocketmq-externals/issues/572#issuecomment-641012091
> > 这个其实是rocketmq项目出现的问题,因为在消息内容转换成MessageView的时候,MessageExt的实际实现类是org.apache.rocketmq.common.message.MessageClientExt。代码点:org.apache.rocketmq.console.model.MessageView#fromMessageExt > >  > > 但是MessageExt是把getMsgId重写了的,代码如下: > >  > > 通常情况下,消息会有两个id,一个getOffsetMsgId(就是我们通常意义上说的在broker生成的唯一id),一个则是在producer端生成的唯一id( 存储在 property中键为UNIQ_KEY的值) > > 实际上我们一直用的其实是offsetMsgId,我们在broker通过消息id查也是通过这个查询的。这里转换等于直接把一个我们不需要的id转换提供到前端去了。 > > 解决办法有两个,一个是在上述rocketmq-console的类转换处,手工set一下把id改掉,一个是在rocketmq-common项目处更改MessageClientExt的getMsgId方法(目前看不出这个额外类存在的必要) > > 你好,感谢回答。这边你有测试过吗。我这边测试好像不行啊,我这边debug好像是在调用查询接口的时候出错了。如图: > <img alt="1" width="1111" src="https://user-images.githubusercontent.com/48859849/84047497-ebf83400-a9dd-11ea-8770-76e278c333c8.png"> 调查询接口出错是因为传入的消息id不对,这个存在的问题是,查询消息返回的那个消息id不是真正意义上的消息id,你需要拿的是实际上messageext里面的msgId,而不是unique_key的值 你在view_message这一步已经算是有错了,因为这个消息的消息id根本不对。 你可以根据楼上说的,用mq admin 的 queryMsgById对两个id进行测试就知道了 ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
