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

RocketMQ事務(wù)消息圖文示例講解

 更新時(shí)間:2022年12月27日 16:10:11   作者:一個(gè)雙子座的Java攻城獅  
RocketMQ事務(wù)消息(Transactional Message)是指應(yīng)用本地事務(wù)和發(fā)送消息操作可以被定義到全局事務(wù)中,要么同時(shí)成功,要么同時(shí)失敗。RocketMQ的事務(wù)消息提供類似 X/Open XA 的分布式事務(wù)功能,通過事務(wù)消息能達(dá)到分布式事務(wù)的最終一致

RocketMQ 也允許我們像mysql 一樣發(fā)送具有事務(wù)特征的消息

MQ 的事務(wù)流程(本地代碼正常執(zhí)行)

MQ 的消息補(bǔ)償過程(當(dāng)本地代碼執(zhí)行失敗時(shí))

MQ 消息的三種狀態(tài)

  • 提交狀態(tài):允許進(jìn)入隊(duì)列,此消息與非事務(wù)消息無區(qū)別
  • 回滾狀態(tài):不允許進(jìn)入隊(duì)列,此消息等同于未發(fā)送過
  • 中間狀態(tài):完成了 half 消息的發(fā)送,未對 MQ 進(jìn)行二次狀態(tài)確認(rèn)(未知狀態(tài))

注意:事務(wù)消息僅與生產(chǎn)者有關(guān),與消費(fèi)者無關(guān)

生產(chǎn)者代碼(提交狀態(tài)、回滾狀態(tài)):

public class Producer {
    public static void main(String[] args) throws Exception{
        //事務(wù)消息使用的生產(chǎn)者是TransactionMQProducer
        TransactionMQProducer producer = new TransactionMQProducer("group1");
        producer.setNamesrvAddr("192.168.23.127:9876");
        //添加本地事務(wù)對應(yīng)的監(jiān)聽
        producer.setTransactionListener(new TransactionListener() {
            //正常事務(wù)過程
            @Override
            public LocalTransactionState executeLocalTransaction(Message message, Object o) {
                // 此處寫本地事務(wù)處理業(yè)務(wù)
                // 如果成功,消息改為提交,如果失敗改為 回滾,如果是多線程處理狀態(tài)未知,就提交為未知等待事務(wù)補(bǔ)償過程
                //事務(wù)提交狀態(tài)
                return LocalTransactionState.COMMIT_MESSAGE;// 類似于msql 的 commit
                //return LocalTransactionState.ROLLBACK_MESSAGE;回滾狀態(tài)
            }
            //事務(wù)補(bǔ)償過程
            @Override
            public LocalTransactionState checkLocalTransaction(MessageExt messageExt) {
                return null;
            }
        });
        producer.start();
        Message msg = new Message("topic8",("事務(wù)消息:hello rocketmq ").getBytes("UTF-8"));
        SendResult result = producer.sendMessageInTransaction(msg,null);
        System.out.println("返回結(jié)果:"+result);
        producer.shutdown();
    }
}

生產(chǎn)者(中間狀態(tài)):

public class Producer {
    public static void main(String[] args) throws Exception{
        //事務(wù)消息使用的生產(chǎn)者是TransactionMQProducer
        TransactionMQProducer producer = new TransactionMQProducer("group1");
        producer.setNamesrvAddr("192.168.23.127:9876");
        //添加本地事務(wù)對應(yīng)的監(jiān)聽
        producer.setTransactionListener(new TransactionListener() {
            //正常事務(wù)過程
            @Override
            public LocalTransactionState executeLocalTransaction(Message message, Object o) {
                return LocalTransactionState.UNKNOW;
            }
            //事務(wù)補(bǔ)償過程
            @Override
            public LocalTransactionState checkLocalTransaction(MessageExt messageExt) {
                System.out.println("事務(wù)補(bǔ)償過程執(zhí)行");
                return LocalTransactionState.COMMIT_MESSAGE;
            }
        });
        producer.start();
        Message msg = new Message("topic8",("事務(wù)消息:hello rocketmq ").getBytes("UTF-8"));
        SendResult result = producer.sendMessageInTransaction(msg,null);
        System.out.println("返回結(jié)果:"+result);
        //事務(wù)補(bǔ)償過程必須保障服務(wù)器在運(yùn)行過程中,否則將無法進(jìn)行正常的事務(wù)補(bǔ)償
        //producer.shutdown();
    }
}

到此這篇關(guān)于RocketMQ事務(wù)消息圖文示例講解的文章就介紹到這了,更多相關(guān)RocketMQ事務(wù)消息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java通過值查找對應(yīng)的枚舉的實(shí)現(xiàn)

    Java通過值查找對應(yīng)的枚舉的實(shí)現(xiàn)

    本文主要介紹了Java通過值查找對應(yīng)的枚舉的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例

    JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例

    ajax技術(shù)是使頁面能局部刷新的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 配置DispatcherServlet的方法介紹

    配置DispatcherServlet的方法介紹

    今天小編就為大家分享一篇關(guān)于配置DispatcherServlet的方法介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • MyBatis多表連接查詢的實(shí)例教程

    MyBatis多表連接查詢的實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MyBatis多表連接查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java并發(fā)框架中的AQS詳細(xì)解析

    Java并發(fā)框架中的AQS詳細(xì)解析

    這篇文章主要介紹了Java并發(fā)框架中的AQS詳細(xì)解析,之前說鎖的升級的時(shí)候,說到了自旋鎖會(huì)空轉(zhuǎn)幾次嘗試等待獲取資源,其實(shí)這一系列的動(dòng)作是有一個(gè)規(guī)范的這個(gè)規(guī)范叫做同步發(fā)生器AbstractQueuedSynchronizer ,簡稱AQS,需要的朋友可以參考下
    2024-01-01
  • 詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)

    詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)

    總有小伙伴讓我總結(jié)一下Java集合中的基本數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),今天特地整理了本篇文章,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • java生成jar包并且單進(jìn)程運(yùn)行的實(shí)例

    java生成jar包并且單進(jìn)程運(yùn)行的實(shí)例

    下面小編就為大家分享一篇java生成jar包并且單進(jìn)程運(yùn)行的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • java發(fā)送post請求使用multipart/form-data格式文件數(shù)據(jù)到接口代碼示例

    java發(fā)送post請求使用multipart/form-data格式文件數(shù)據(jù)到接口代碼示例

    這篇文章主要介紹了java發(fā)送post請求使用multipart/form-data格式文件數(shù)據(jù)到接口的相關(guān)資料,文中指定了數(shù)據(jù)編碼格式為UTF-8,并強(qiáng)調(diào)了所需依賴工具類,需要的朋友可以參考下
    2024-12-12
  • Spring Boot配置application.yml及根據(jù)application.yml選擇啟動(dòng)配置的操作方法

    Spring Boot配置application.yml及根據(jù)application.yml選擇啟動(dòng)配置的操作

    Spring Boot中可以選擇applicant.properties 作為配置文件,也可以通過在application.yml中進(jìn)行配置,讓Spring Boot根據(jù)你的選擇進(jìn)行加載啟動(dòng)配置文件,本文給大家介紹Spring Boot配置application.yml及根據(jù)application.yml選擇啟動(dòng)配置的操作方法,感興趣的朋友一起看看吧
    2023-10-10
  • idea項(xiàng)目中target文件提示拒絕訪問的解決

    idea項(xiàng)目中target文件提示拒絕訪問的解決

    這篇文章主要介紹了idea項(xiàng)目中target文件提示拒絕訪問的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

广宁县| 天台县| 晋江市| 漳平市| 鸡东县| 拉萨市| 彰武县| 承德市| 邹平县| 宁化县| 汪清县| 基隆市| 淅川县| 深水埗区| 临桂县| 呼和浩特市| 泉州市| 和田市| 赤城县| 定南县| 堆龙德庆县| 澎湖县| 淄博市| 彰化县| 满洲里市| 正定县| 张家口市| 永顺县| 田林县| 雅安市| 古丈县| 南漳县| 理塘县| 德阳市| 同仁县| 佛坪县| 岗巴县| 葵青区| 仁怀市| 商水县| 辰溪县|