分散トランザクション フレームワーク LCN の使用法、原理、ソース コードの読み取り

公式ウェブサイト:https://www.codingapi.com/docs/home/

原理:

公式サイトへお越しください
ここに画像の説明を挿入

使用:

ここに画像の説明を挿入
エウレカ。
1 つの TM と 2 つの RM は、それぞれ注文サービスと支払いサービスです。
詳しい設定については公式サイトをご覧ください。

注文サービスコントローラー:

    @PostMapping("/add-order")
    @Transactional(rollbackFor = Exception.class)
    @LcnTransaction
    public String add(@RequestBody TblOrder bean){
    
    

        JSONObject date = new JSONObject();
        date.put("payName",bean.getOrderName()+"pay");

        restTemplate.postForEntity("http://lcn-pay/add-pay",date,String.class);
        int i = 1/0;
        tblOrderDao.insert(bean);
        return "新增订单成功";
    }

支払いサービス管理者:

    @PostMapping("/add-pay")
    @Transactional(rollbackFor = Exception.class)
    @LcnTransaction
    public String addPay(@RequestBody TblPay bean){
    
    
        tblPayDao.insert(bean);
//        int i = 1/0;
        return "新增支付成功";

    }

@LcnTransaction を追加するだけです

ソースコード

1 エントリ:

aop アスペクト クラスを使用して
TransactionAspect
ここに画像の説明を挿入
ここに画像の説明を挿入
をインターセプトし、トランザクション メッセージを取得します。
ここに画像の説明を挿入
実行プロセス:
トランザクション コンテキストがあるかどうかを判断し、存在する場合は
親コンテキスト
ここに画像の説明を挿入
を取得し、存在しない場合は作成し、トランザクションの
開始者であるかどうかを判断します。
キャッシュを
クリックすると、Map<String, Object> singlePropCache になります。
ここに画像の説明を挿入
startxx の一般的なフレームワークとは何ですか。
ほとんどのキャッシュには、
endXX
clearXX
cleanXX
destoryXXが含まれます
。 コードをプルダウンします。
破棄メソッドを見つけます
。 実行後、次のコンテキスト情報を削除します。最後に
ここに画像の説明を挿入
、コンテキスト情報を取得し、一連のパラメーターを設定し、何とか、キーポイントを入力します。
ここに画像の説明を挿入
DTXServiceExecutor #transactionRunning
ここに画像の説明を挿入
トランザクション伝播ステータスの取得
ここに画像の説明を挿入
トランザクション操作の
開始前実行前トランザクション開始者は
トランザクショングループを初期化します
トランザクション参加者は何も実行しません
ここに画像の説明を挿入
ビジネスの実行
とは、 @LcnTransaction アノテーションによって変更されたメソッドの内容を実行します
ここに画像の説明を挿入
ここに画像の説明を挿入
実行は正常に完了しました:
ここに画像の説明を挿入
トランザクション開始者:
状態を 1 に設定します
ここに画像の説明を挿入
トランザクション参加者:
トランザクション グループに参加します
ここに画像の説明を挿入
実行失敗:
トランザクション開始者:
ステータスを 0 に設定
ここに画像の説明を挿入
トランザクション参加者:
トランザクション情報を削除
ここに画像の説明を挿入
実行完了:内部をクリックするように
TM に通知:
ここに画像の説明を挿入

ここに画像の説明を挿入

2 LCN はどのように操作データベース接続を取得しますか?

DataSourceAspect は
データベース接続の取得時にインターセプトします:
ここに画像の説明を挿入
プロキシを実行し、さまざまな種類のトランザクションのデータベース接続を自分でパッケージ化します
ここに画像の説明を挿入
。LCN を例に挙げます:
自分のデータを返し、プロキシ クラスに接続します:
ここに画像の説明を挿入
独自の処理を行います。一般的なプロセスは
ここに画像の説明を挿入
ここに画像の説明を挿入
ほぼ次のとおり
です。 TCC モードについてもう一度見てみましょう。
興味があれば一緒に議論してください。

おすすめ

転載: blog.csdn.net/lx9876lx/article/details/121197022