欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過(guò)程講解

 更新時(shí)間:2023年05月20日 09:05:36   作者:小白的救贖  
消息的可靠性傳遞是指保證消息百分百發(fā)送到消息隊(duì)列中去,這篇文章主要介紹了RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過(guò)程,感興趣想要詳細(xì)了解可以參考下文

目錄結(jié)構(gòu)

導(dǎo)入依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
        <version>2.5.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

修改yml

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    publisher-confirm-type: correlated # 開(kāi)啟確認(rèn)回調(diào)
    publisher-returns: true # 開(kāi)啟退回回調(diào)

在publisher-confirm-type中有三個(gè)確認(rèn)消息接受類型:none、correlated、simple。

publisher-confirm-type: none 表示禁用發(fā)布確認(rèn)模式。是默認(rèn)值。使用此模式之后,不管消息有沒(méi)有發(fā)送到Broker(RabbitMQ)都不會(huì)觸發(fā)ConfirmCallback回調(diào)。

publisher-confirm-type: correlated 表示消息成功到達(dá)Broker后觸發(fā)ConfirmCalllBack回調(diào)。

publisher-confirm-type: simple 表示如果消息成功到達(dá)Broker后一樣會(huì)觸發(fā)ConfirmCalllBack回調(diào),發(fā)布消息成功后使用rabbitTemplate調(diào)用waitForConfirms()或waitForConfirmsOrDie()方法等待Broker節(jié)點(diǎn)返回發(fā)送結(jié)果,根據(jù)返回結(jié)果來(lái)判定下一步的邏輯。如果waitForConfirmsOrDie()方法如果返回false則會(huì)關(guān)閉channel信道,則接下來(lái)無(wú)法發(fā)送消息到Broker。

業(yè)務(wù)邏輯

@SpringBootTest
@RunWith(SpringRunner.class)
class RabbitmqProducerApplicationTests {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test
    void testProducer() {
        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
            //三個(gè)參數(shù)分別為:相關(guān)配置消息、交換機(jī)是否收到消息、未收到消息的原因
            @Override
            public void confirm(CorrelationData correlationData, boolean b, String s) {
                if(b) System.out.println("交換機(jī)成功接受到了消息");
                else System.out.println("消息失敗原因" + s);
            }
        });
        // 設(shè)置交換機(jī)處理失敗消息的模式
        // true:消息到達(dá)不了隊(duì)列時(shí) 會(huì)將消息重新返回給生產(chǎn)者 false:消息到達(dá)不了隊(duì)列直接丟棄(默認(rèn))
        rabbitTemplate.setMandatory(true);
        rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
            //五個(gè)參數(shù)分別為:消息對(duì)象、失敗狀態(tài)碼、失敗信息、交換機(jī)名稱、路由鍵
            @Override
            public void returnedMessage(Message message, int i, String s, String s1, String s2) {
                System.out.println("隊(duì)列接受不到交換機(jī)的消息進(jìn)行了失敗回調(diào)");
            }
        });
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"test.heHe","HelloWorld");
    }
}

測(cè)試結(jié)果

為了測(cè)試是否進(jìn)行了確認(rèn)回調(diào)方法即confirmCallBack()方法,我將上方的交換機(jī)名稱故意寫(xiě)錯(cuò)

rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME + "1","test.heHe","HelloWorld");

為了測(cè)試是否進(jìn)行了退回回調(diào)方法即returnCallBack()方法,我將上方的路由鍵名稱故意寫(xiě)錯(cuò)

rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"t.heHe","HelloWorld");

總結(jié)

經(jīng)上方兩次測(cè)試,可以使用ConfirmCallBack與ReturnCallBack來(lái)確認(rèn)消息的可靠性傳遞。ConfirmCallBack是確認(rèn)交換機(jī)是否可以成功接收到消息,而ReturnCallBack是確認(rèn)隊(duì)列是否可以成功接收到交換機(jī)發(fā)來(lái)的消息。這是作為解決作為消息發(fā)送方希望杜絕任何消息丟失或者投遞失敗場(chǎng)景。 但需要注意的是在yml中必須添加兩行配置。

到此這篇關(guān)于RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過(guò)程講解的文章就介紹到這了,更多相關(guān)RabbitMQ消息可靠性傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式之解釋器模式

    Java設(shè)計(jì)模式之解釋器模式

    這篇文章介紹了Java設(shè)計(jì)模式之解釋器模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • SpringMVC的處理器適配器-HandlerAdapter的用法及說(shuō)明

    SpringMVC的處理器適配器-HandlerAdapter的用法及說(shuō)明

    這篇文章主要介紹了SpringMVC的處理器適配器-HandlerAdapter的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 解析HikariCP一百行代碼輕松掌握多線程

    解析HikariCP一百行代碼輕松掌握多線程

    這篇文章主要為大家介紹了HikariCP一百行代碼解析,輕松掌握多線程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android?Java判斷密碼強(qiáng)度方法實(shí)例(強(qiáng)度顯示)

    Android?Java判斷密碼強(qiáng)度方法實(shí)例(強(qiáng)度顯示)

    在現(xiàn)代社會(huì)中,密碼是確保我們個(gè)人信息和賬戶安全的重要手段之一,為了提高密碼的安全性,我們可以使用正則表達(dá)式來(lái)判斷密碼的強(qiáng)度,這篇文章主要給大家介紹了關(guān)于Android?Java判斷密碼強(qiáng)度(強(qiáng)度顯示)的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • jenkins按模塊進(jìn)行構(gòu)建遇到的問(wèn)題及解決方案

    jenkins按模塊進(jìn)行構(gòu)建遇到的問(wèn)題及解決方案

    這篇文章主要介紹了jenkins按模塊進(jìn)行構(gòu)建的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 深入淺析Spring Security5中默認(rèn)密碼編碼器

    深入淺析Spring Security5中默認(rèn)密碼編碼器

    這篇文章主要介紹了Spring Security5中默認(rèn)密碼編碼器,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄

    SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄

    這篇文章主要介紹了SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄,簡(jiǎn)單介紹了springmvc攔截器,單點(diǎn)登錄實(shí)現(xiàn)原理等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot2.0+阿里巴巴Sentinel動(dòng)態(tài)限流實(shí)戰(zhàn)(附源碼)

    SpringBoot2.0+阿里巴巴Sentinel動(dòng)態(tài)限流實(shí)戰(zhàn)(附源碼)

    這篇文章主要介紹了SpringBoot2.0+阿里巴巴Sentinel動(dòng)態(tài)限流實(shí)戰(zhàn)(附源碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file bytecode version:52.0(java 8)錯(cuò)誤的解決辦法

    IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file byt

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file bytecode version:52.0(java 8)錯(cuò)誤的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Spring Boot延遲執(zhí)行實(shí)現(xiàn)方法

    Spring Boot延遲執(zhí)行實(shí)現(xiàn)方法

    本文介紹了在Spring Boot項(xiàng)目中延遲執(zhí)行方法的實(shí)現(xiàn),以及延遲執(zhí)行下聲明式事務(wù)和編程式事務(wù)的使用情況,感興趣的朋友一起看看吧
    2020-12-12

最新評(píng)論