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

Springboot?2.x?RabbitTemplate默認(rèn)消息持久化的原因解析

 更新時(shí)間:2022年03月01日 10:17:58   作者:專注寫bug  
這篇文章主要介紹了Springboot?2.x?RabbitTemplate默認(rèn)消息持久化的原因解析,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

之前在Java直接測(cè)試mq消息持久化時(shí),采取如下的配置實(shí)現(xiàn)消息的持久化:

//消息持久化測(cè)試
Builder builder = new Builder();
builder.deliveryMode(2);
BasicProperties properties = builder.build();
channel.basicPublish("", queue_name, properties, string.getBytes());

其中針對(duì)BasicProperties中的源碼信息為:

public static class BasicProperties extends
com.rabbitmq.client.impl.AMQBasicProperties {
        private String contentType;//消息類型如:text/plain
        private String contentEncoding;//編碼
        private Map<String,Object> headers;
        private Integer deliveryMode;//1:nonpersistent 不持久 2:persistent 持久
        private Integer priority;//優(yōu)先級(jí)
        private String correlationId;
        private String replyTo;//反饋隊(duì)列
        private String expiration;//expiration到期時(shí)間
        private String messageId;
        private Date timestamp;
        private String type;
        private String userId;
        private String appId;
        private String clusterId;
...

參照博客:消息應(yīng)答(autoAck)、隊(duì)列持久化(durable)以及消息持久化

springboot測(cè)試

上面的配置是Java直接測(cè)試時(shí),所需要編寫的代碼邏輯,如果采取springboot配置,則會(huì)出現(xiàn)默認(rèn)消息持久化的現(xiàn)象。

至于測(cè)試案例,可以參考下列博客:

SpringBoot整合RabbitMQ實(shí)現(xiàn)消息確認(rèn)機(jī)制

測(cè)試現(xiàn)象

首先將消息消費(fèi)者代碼進(jìn)行注釋。執(zhí)行接口,創(chuàng)建消息存入隊(duì)列中。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

源碼分析

要想知道為什么消息會(huì)自動(dòng)持久化,則需要關(guān)注rabbitTemplate.convertAndSend(exchange,routingKey,msg)這個(gè)方法。

從源碼執(zhí)行邏輯可以看出:

在這里插入圖片描述

rabbitTemplate提供的消息加載至隊(duì)列中,采取的數(shù)據(jù)類型為Object,但在其源碼邏輯中,又將Object消息類型,進(jìn)行了this.convertMessageIfNecessary(object)處理,將object對(duì)象類型轉(zhuǎn)化為Message對(duì)象類型。

在這里插入圖片描述

從此處可以看出,rabbitTemplate為了讓開發(fā)者處理數(shù)據(jù)更簡(jiǎn)單,將消息持久化等操作默認(rèn)進(jìn)行了配置。

現(xiàn)在,一起來(lái)看convertMessageIfNecessary(object)做了什么?

在這里插入圖片描述

判斷當(dāng)前的數(shù)據(jù)類型,是否是Message類型。

如果是Message類型,則直接將其強(qiáng)轉(zhuǎn)Message
如果不是,則執(zhí)行了新的方法,將其轉(zhuǎn)換了一次。

轉(zhuǎn)換過(guò)程如下所示:

在這里插入圖片描述

在這里插入圖片描述

后面的就不深入了。那持久化的默認(rèn)配置在哪進(jìn)行的?

回到最初的convertAndSend執(zhí)行方法。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

該參數(shù)由類創(chuàng)建加載時(shí)生成,其數(shù)據(jù)如下所示:

在這里插入圖片描述

在這里插入圖片描述

聯(lián)想

也就是說(shuō),在convertMessageIfNecessary時(shí),會(huì)判斷傳遞的參數(shù)類型是否為Message類型,如果不是則需要再包裝一次。

如果不想設(shè)定消息持久化,傳遞的數(shù)據(jù)類型為Message類型即可!

到此這篇關(guān)于Springboot 2.x RabbitTemplate默認(rèn)消息持久化的原因解析的文章就介紹到這了,更多相關(guān)Springboot 2.x RabbitTemplate默認(rèn)消息持久化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)動(dòng)態(tài)圖片效果

    java實(shí)現(xiàn)動(dòng)態(tài)圖片效果

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)動(dòng)態(tài)圖片效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • JavaWeb中Servlet的生命周期及線程安全問(wèn)題詳解

    JavaWeb中Servlet的生命周期及線程安全問(wèn)題詳解

    這篇文章主要介紹了JavaWeb中Servlet的生命周期及線程安全問(wèn)題詳解,Servlet?生命周期可被定義為從創(chuàng)建直到毀滅的整個(gè)過(guò)程,Servlet體系結(jié)構(gòu)是建立在Java多線程機(jī)制之上的,它的生命周期是由Web容器負(fù)責(zé)的,需要的朋友可以參考下
    2024-01-01
  • Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容實(shí)例解析

    Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容實(shí)例解析

    這篇文章主要介紹了Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容,是比較實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • spring中的注入list集合

    spring中的注入list集合

    這篇文章主要介紹了spring中的注入list集合問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java的Channel通道之FileChannel類詳解

    Java的Channel通道之FileChannel類詳解

    這篇文章主要介紹了Java的Channel通道之FileChannel類詳解,FileChannel類是Java NIO中的一個(gè)重要類,用于在文件中進(jìn)行讀寫操作,它提供了一種高效的方式來(lái)處理大文件和隨機(jī)訪問(wèn)文件的需求,需要的朋友可以參考下
    2023-10-10
  • Java實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼生成(后端工具類)

    Java實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼生成(后端工具類)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼生成功能中的后端工具類部分,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • Java利用cors實(shí)現(xiàn)跨域請(qǐng)求實(shí)例

    Java利用cors實(shí)現(xiàn)跨域請(qǐng)求實(shí)例

    本篇文章主要介紹了Java利用cors實(shí)現(xiàn)跨域請(qǐng)求實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 關(guān)于feign接口動(dòng)態(tài)代理源碼解析

    關(guān)于feign接口動(dòng)態(tài)代理源碼解析

    這篇文章主要介紹了關(guān)于feign接口動(dòng)態(tài)代理源碼解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 中 Map 集合的三種遍歷方式小結(jié)

    Java 中 Map 集合的三種遍歷方式小結(jié)

    這篇文章主要介紹了Java 中 Map 集合的三種遍歷方式,每種遍歷方式結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Java之Maven工程打包jar

    Java之Maven工程打包jar

    Maven打包一般可以生成兩種包一種是可以直接運(yùn)行的包,一種是依賴包(只是編譯包)。Maven默認(rèn)打包時(shí)jar,如果需要修改其他類型,可以修改pom.xml。感興趣的同學(xué)可以參考閱讀
    2023-04-04

最新評(píng)論

延川县| 措美县| 平远县| 陆河县| 辛集市| 沂南县| 扶绥县| 景泰县| 舞阳县| 金山区| 松溪县| 文化| 晋江市| 广河县| 抚松县| 达州市| 兴海县| 扎兰屯市| 苍山县| 罗平县| 宝清县| 剑阁县| 临湘市| 宜阳县| 介休市| 滨海县| 龙江县| 旌德县| 永康市| 常州市| 麦盖提县| 巴彦淖尔市| 滦平县| 天峻县| 砚山县| 荆州市| 无极县| 大英县| 图们市| 依兰县| 四会市|