最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決rocketmq-client查詢(xún)手動(dòng)發(fā)送消息異常問(wèn)題

 更新時(shí)間:2023年08月29日 15:26:27   作者:小淼同學(xué)  
這篇文章主要介紹了解決rocketmq-client查詢(xún)手動(dòng)發(fā)送消息異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

rocketmq-client查詢(xún)手動(dòng)發(fā)送消息異常

今天處理rocketmq的后臺(tái)的一些問(wèn)題

下面這個(gè)問(wèn)題是你也用網(wǎng)上4.x的rocketmq版本的監(jiān)控后臺(tái),才會(huì)出現(xiàn)的

MQClientException: CODE: 208 DESC: query message by id finished, but no message.

這個(gè)是我們用rocketmq-client手動(dòng)發(fā)送消息的時(shí)候,再去查看消息詳情的時(shí)候遇到的問(wèn)題,會(huì)報(bào)錯(cuò),消息找不到

這是由于查詢(xún)出來(lái)的mq消息,這些消息的msgId,不是真的msgId,而是UniqueKey

為什么會(huì)這樣呢,我們來(lái)看一段源碼

public static List<MessageExt> decodes(java.nio.ByteBuffer byteBuffer, final boolean readBody) {
        List<MessageExt> msgExts = new ArrayList<MessageExt>();
        while (byteBuffer.hasRemaining()) {
            MessageExt msgExt = clientDecode(byteBuffer, readBody);
            if (null != msgExt) {
                msgExts.add(msgExt);
            } else {
                break;
            }
        }
        return msgExts;
    }

1.以上是解析從broker獲取到的消息

  public static MessageExt clientDecode(java.nio.ByteBuffer byteBuffer, final boolean readBody) {
        return decode(byteBuffer, readBody, true, true);
    }

2.注意第四個(gè)參數(shù)是true

它代表是否是client端,就是監(jiān)控端

 public static MessageExt decode(
        java.nio.ByteBuffer byteBuffer, final boolean readBody, final boolean deCompressBody, final boolean isClient) {
        try {
            MessageExt msgExt;
            //1.重點(diǎn)看這里
            if (isClient) {
                msgExt = new MessageClientExt();
            } else {
                msgExt = new MessageExt();
            }
            //此處省略
            ...........
            ByteBuffer byteBufferMsgId = ByteBuffer.allocate(MSG_ID_LENGTH);
            String msgId = createMessageId(byteBufferMsgId, msgExt.getStoreHostBytes(), msgExt.getCommitLogOffset());
            msgExt.setMsgId(msgId);
            //2.重點(diǎn)看這里
            if (isClient) {
                ((MessageClientExt) msgExt).setOffsetMsgId(msgId);
            }
            return msgExt;
        } catch (Exception e) {
            byteBuffer.position(byteBuffer.limit());
        }
        return null;
    }

3.MessageClientExt主要是這個(gè)對(duì)象惹的禍

老的版本mq就是一個(gè) MessageExt

我們?cè)賮?lái)看看這個(gè)對(duì)象為什么惹禍了

public class MessageClientExt extends MessageExt {
    public String getOffsetMsgId() {
        return super.getMsgId();
    }
    public void setOffsetMsgId(String offsetMsgId) {
        super.setMsgId(offsetMsgId);
    }
    /**
    * 沒(méi)錯(cuò)就是這里,默認(rèn)拿的是屬性里的UNIQ_KEY
    **/
    @Override
    public String getMsgId() {
        String uniqID = MessageClientIDSetter.getUniqID(this);
        if (uniqID == null) {
            return this.getOffsetMsgId();
        } else {
            return uniqID;
        }
    }
    public void setMsgId(String msgId) {
        //DO NOTHING
        //MessageClientIDSetter.setUniqID(this);
    }
}

所以知道了問(wèn)題,就好解決了

我是在顯示類(lèi)里面做相應(yīng)的處理,貼下我的處理方式,我是在  MessageView.class里處理

 public static MessageView fromMessageExt(MessageExt messageExt) {
        MessageView messageView = new MessageView();
        BeanUtils.copyProperties(messageExt, messageView);
        if (messageExt.getBody() != null) {
            messageView.setMessageBody(new String(messageExt.getBody(), Charsets.UTF_8));
        }
        //主要是這里判斷下,是否是這個(gè)類(lèi),是就把原來(lái)的msgId拿出來(lái)
        if(messageExt instanceof MessageClientExt){
            MessageClientExt ext =   (MessageClientExt) messageExt;
            messageView.setMsgId(ext.getOffsetMsgId());
        }
        return messageView;
    }

總結(jié)

好了,這里就總結(jié)下這個(gè)問(wèn)題

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決spring jpa中update的坑

    解決spring jpa中update的坑

    這篇文章主要介紹了spring jpa中update遇到的坑及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring事務(wù)失效的問(wèn)題及解決方案

    Spring事務(wù)失效的問(wèn)題及解決方案

    本文詳細(xì)分析了Spring事務(wù)失效的原因,并提供了一個(gè)解決方案,在代碼中,事務(wù)傳播屬性設(shè)置為REQUIRES_NEW解決了事務(wù)失效的問(wèn)題,確保了日志記錄的操作不會(huì)影響主事務(wù)的回滾,同時(shí),文中還總結(jié)了各種事務(wù)傳播屬性的含義和使用場(chǎng)景
    2025-11-11
  • Mybatis中的mapper模糊查詢(xún)語(yǔ)句LIKE

    Mybatis中的mapper模糊查詢(xún)語(yǔ)句LIKE

    這篇文章主要介紹了Mybatis中的mapper模糊查詢(xún)語(yǔ)句LIKE,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-12-12
  • Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析

    Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析

    這篇文章主要介紹了Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析,簡(jiǎn)單工廠模式提供一個(gè)創(chuàng)建對(duì)象實(shí)例的功能,而無(wú)須關(guān)心其具體實(shí)現(xiàn),被創(chuàng)建實(shí)例的類(lèi)型可以是接口、抽象類(lèi),也可以是具體的類(lèi),需要的朋友可以參考下
    2023-11-11
  • JPA?CriteriaBuilder子查詢(xún)方式

    JPA?CriteriaBuilder子查詢(xún)方式

    這篇文章主要介紹了JPA?CriteriaBuilder子查詢(xún)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter

    dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter

    這篇文章主要介紹了dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring Boot 整合 RocketMQ 的全流程(消息發(fā)送、消費(fèi)、重試)

    Spring Boot 整合 RocketMQ 的全流程(消息發(fā)送、消費(fèi)、重試)

    本文詳細(xì)介紹了 Spring Boot 整合 RocketMQ 的全流程,包括環(huán)境搭建、依賴(lài)配置、消息發(fā)送(同步 / 異步 / 單向)、消息消費(fèi)(集群 / 廣播、并發(fā) / 順序)、消息重試與死信隊(duì)列處理,并提供了完整的代碼示例,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Java中JFrame實(shí)現(xiàn)無(wú)邊框無(wú)標(biāo)題方法

    Java中JFrame實(shí)現(xiàn)無(wú)邊框無(wú)標(biāo)題方法

    這篇文章主要介紹了Java中JFrame實(shí)現(xiàn)無(wú)邊框無(wú)標(biāo)題方法,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-05-05
  • java?11新特性HttpClient主要組件及發(fā)送請(qǐng)求示例詳解

    java?11新特性HttpClient主要組件及發(fā)送請(qǐng)求示例詳解

    這篇文章主要為大家介紹了java?11新特性HttpClient主要組件及發(fā)送請(qǐng)求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 深入淺析JDK8新特性之Lambda表達(dá)式

    深入淺析JDK8新特性之Lambda表達(dá)式

    Lambda表達(dá)式主要是替換了原有匿名內(nèi)部類(lèi)的寫(xiě)法,也就是簡(jiǎn)化了匿名內(nèi)部類(lèi)的寫(xiě)法。這篇文章主要介紹了JDK8新特性之Lambda表達(dá)式,非常不錯(cuò)感興趣的朋友參考下吧
    2016-10-10

最新評(píng)論

张掖市| 高雄市| 湖北省| 临桂县| 富民县| 宜章县| 德化县| 旅游| 清原| 牡丹江市| 黔南| 克东县| 秦安县| 兴城市| 蚌埠市| 稻城县| 利川市| 宜春市| 镇赉县| 车险| 化隆| 保德县| 五家渠市| 普兰店市| 临沭县| 阳高县| 镇远县| 海门市| 饶河县| 太仓市| 久治县| 东莞市| 礼泉县| 云龙县| 灵川县| 昭苏县| 且末县| 盘山县| 海兴县| 海晏县| 伊宁市|