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

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

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

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

導入依賴

<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 # 開啟確認回調(diào)
    publisher-returns: true # 開啟退回回調(diào)

在publisher-confirm-type中有三個確認消息接受類型:none、correlated、simple。

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

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

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

業(yè)務邏輯

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

測試結(jié)果

為了測試是否進行了確認回調(diào)方法即confirmCallBack()方法,我將上方的交換機名稱故意寫錯

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

為了測試是否進行了退回回調(diào)方法即returnCallBack()方法,我將上方的路由鍵名稱故意寫錯

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

總結(jié)

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

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

相關文章

  • java通過方向鍵控制小球移動的小游戲

    java通過方向鍵控制小球移動的小游戲

    這篇文章主要為大家詳細介紹了java通過方向鍵控制小球移動的小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 利用Java實現(xiàn)圖片馬賽克效果

    利用Java實現(xiàn)圖片馬賽克效果

    馬賽克效果是一種常見的圖像處理技術,通過將圖像劃分為多個小塊并對每個小塊進行平均色處理,模擬馬賽克的效果,在本項目中,我們將使用Java的Swing庫和圖像處理技術來實現(xiàn)圖片的馬賽克特效,需要的朋友可以參考下
    2025-02-02
  • Java稀疏數(shù)組詳細圖文教程

    Java稀疏數(shù)組詳細圖文教程

    當一個數(shù)組中的大部分元素為相同的值,可使用稀疏數(shù)組來保存該數(shù)組,可以將稀疏數(shù)組看做是普通數(shù)組的壓縮,這篇文章主要給大家介紹了關于Java稀疏數(shù)組的相關資料,需要的朋友可以參考下
    2023-09-09
  • Java實戰(zhàn)之郵件的撰寫和發(fā)送

    Java實戰(zhàn)之郵件的撰寫和發(fā)送

    這篇文章主要為大家詳細介紹了通過Java代碼實現(xiàn)郵件的撰寫和發(fā)送功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,需要的小伙伴們可以學習一下
    2021-11-11
  • Java如何在臨界區(qū)中避免競態(tài)條件

    Java如何在臨界區(qū)中避免競態(tài)條件

    這篇文章主要介紹了Java如何在臨界區(qū)中避免競態(tài)條件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java雜談之如何優(yōu)化寫出漂亮高效的代碼

    Java雜談之如何優(yōu)化寫出漂亮高效的代碼

    不一致的代碼會造成認知上的負擔,在一個系統(tǒng)中,做類似的事情,卻有不同的做法,或者起到類似作用的事物,卻有不同的名字,讓人困惑
    2021-09-09
  • Spring?boot事務無效報錯:Transaction?not?enabled問題排查解決

    Spring?boot事務無效報錯:Transaction?not?enabled問題排查解決

    在業(yè)務代碼中經(jīng)常需要保證事務的原子性,但是有的時候確實是出現(xiàn)事務沒有生效,這篇文章主要給大家介紹了關于Spring?boot事務無效報錯:Transaction?not?enabled問題排查的相關資料,需要的朋友可以參考下
    2023-11-11
  • SpringBoot中的@ControllerAdvice注解原理詳解

    SpringBoot中的@ControllerAdvice注解原理詳解

    這篇文章主要介紹了SpringBoot中的@ControllerAdvice注解原理詳解,在SpringBoot應用程序啟動過程中,Spring會掃描所有的類,尋找?guī)в蠤ControllerAdvice注解的類這些方法會被添加到一個映射表中,以便后續(xù)處理異常時能找到對應的處理方法,需要的朋友可以參考下
    2024-01-01
  • Springboot+Mybatis中typeAliasesPackage正則掃描實現(xiàn)方式

    Springboot+Mybatis中typeAliasesPackage正則掃描實現(xiàn)方式

    這篇文章主要介紹了Springboot+Mybatis中typeAliasesPackage正則掃描實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java開發(fā)環(huán)境配置教程(win7 64bit)

    Java開發(fā)環(huán)境配置教程(win7 64bit)

    這篇文章主要為大家詳細介紹了win7 64bit下Java開發(fā)環(huán)境的配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論

晋江市| 神农架林区| 揭东县| 鸡西市| 浑源县| 克东县| 靖宇县| 溧水县| 石河子市| 丹凤县| 永川市| 隆昌县| 光泽县| 古交市| 大方县| 乌兰县| 昌黎县| 高平市| 长宁区| 兰考县| 罗定市| 宜宾县| 黄平县| 建阳市| 乌拉特中旗| 溆浦县| 林芝县| 垫江县| 灯塔市| 南京市| 蒲江县| 东宁县| 大同县| 莱西市| 黄浦区| 江永县| 德阳市| 顺义区| 祁阳县| 罗山县| 滕州市|