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

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

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

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

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

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

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)文章

  • springboot Mongodb的集成與使用實(shí)例詳解

    springboot Mongodb的集成與使用實(shí)例詳解

    這篇文章主要介紹了springboot Mongodb的集成與使用實(shí)例詳解,需要的朋友可以參考下
    2018-04-04
  • Maven版本沖突的三種解決方法

    Maven版本沖突的三種解決方法

    在Maven項(xiàng)目中,依賴傳遞可能導(dǎo)致Jar包版本沖突,常見的解決策略包括依賴排除、版本鎖定和使用maven-shade-plugin插件,本文就來介紹一下這三種解決方法,感興趣的可以了解一下
    2024-10-10
  • SpringBoot中@ConfigurationProperties實(shí)現(xiàn)配置自動綁定的方法

    SpringBoot中@ConfigurationProperties實(shí)現(xiàn)配置自動綁定的方法

    本文主要介紹了SpringBoot中@ConfigurationProperties實(shí)現(xiàn)配置自動綁定的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java的繪圖模式使用淺析

    Java的繪圖模式使用淺析

    這篇文章主要介紹了Java的繪圖模式使用淺析,以一個小例子大概列舉了XOR模式下能干的一些事情,需要的朋友可以參考下
    2015-10-10
  • 在SpringBoot中使用MongoDB完成數(shù)據(jù)存儲

    在SpringBoot中使用MongoDB完成數(shù)據(jù)存儲

    本文主要介紹了在SpringBoot中如惡化使用MongoDB完成數(shù)據(jù)存儲,接下來這篇我們將圍繞MongoDB進(jìn)行,MongoDB是一個開源的,面向文檔的NoSQL數(shù)據(jù)庫管理系統(tǒng),使用類似JSON的BSON(二進(jìn)制JSON)格式來存儲數(shù)據(jù),具有靈活的數(shù)據(jù)模型和強(qiáng)大的查詢功能,需要的朋友可以參考下
    2023-11-11
  • Java中常用的9種文件下載方法總結(jié)

    Java中常用的9種文件下載方法總結(jié)

    下載文件在我們項(xiàng)目很常見,有下載視頻、文件、圖片、附件、導(dǎo)出Excel等,所以本文為大家整理了9中Java中常用的文件下載方式,希望對大家有所幫助
    2023-09-09
  • Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf

    Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf

    這篇文章主要介紹了Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java生產(chǎn)者消費(fèi)者模式實(shí)例分析

    Java生產(chǎn)者消費(fèi)者模式實(shí)例分析

    這篇文章主要介紹了Java生產(chǎn)者消費(fèi)者模式,結(jié)合實(shí)例形式分析了java生產(chǎn)者消費(fèi)者模式的相關(guān)組成、原理及實(shí)現(xiàn)方法,需要的朋友可以參考下
    2019-03-03
  • Java注解的簡單入門小案例

    Java注解的簡單入門小案例

    這篇文章主要介紹了Java注解的簡單入門小案例,注解是干什么的?怎么使用?注解的簡單用法,需要的朋友可以參考下
    2023-04-04
  • Jenkins初級應(yīng)用之Invoke?Phing?targets插件配置

    Jenkins初級應(yīng)用之Invoke?Phing?targets插件配置

    這篇文章主要為大家介紹了Jenkins初級應(yīng)用之Invoke?Phing?targets的插件配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪<BR>
    2022-04-04

最新評論