MYSQL分佈式事物案例

func tx() { tx := settle.Orm() trans := settle.OrderTrans{} // 啓動協調器 settle.OrderTransandler.Insert(nil, &trans) // orderDb orderDb := model.Orm() orderDb.Exec("XA START '" + cast.ToString(trans.Id) + "';") err := orderDb.Exec("update order_table set create_time = 1 where id = ?", 1).Error if err != nil { fmt.Printf("%#v\n", err.Error()) } orderDb.Exec("XA END '" + cast.ToString(trans.Id) + "';") orderDb.Exec("XA PREPARE '" + cast.ToString(trans.Id) + "';") err = tx.Exec("update order_trans set tx1 = 1 where id = ?", trans.Id).Error if err != nil { fmt.Printf("%#v\n", err.Error()) } // misunDb misunDb := misun.Orm() misunDb.Exec("XA START '" + cast.ToString(trans.Id) + "';") err = misunDb.Exec("update order_table set create_time = 1 where id = ?", 1).Error if err != nil { fmt.Printf("%#v\n", err.Error()) } misunDb.Exec("XA END '" + cast.ToString(trans.Id) + "';") misunDb.Exec("XA PREPARE '" + cast.ToString(trans.Id) + "';") err = tx.Exec("update order_trans set tx2 = 1 where id = ?", trans.Id).Error if err != nil { fmt.Printf("%#v\n", err.Error()) } time.Sleep(3 * time.Minute) // commit misunDb.Exec("XA COMMIT '" + cast.ToString(trans.Id) + "';") err = tx.Exec("update order_trans set tx1 = 2 where id = ?", trans.Id).Error if err != nil { fmt.Printf("%#v\n", err.Error()) } orderDb.Exec("XA COMMIT '" + cast.ToString(trans.Id) + "';") err = tx.Exec("update order_trans set tx2 = 2 where id = ?", trans.Id).Error if err != nil { fmt.Printf("%#v\n", err.Error()) } } func txCron() { orderDb := model.Orm() misunDb := misun.Orm() list, _ := settle.OrderTransHandler.GetList("tx1 < 1 or tx2 < 1") for k1 := range list { misunDb.Exec("XA ROLLBACK '" + cast.ToString(list[k1].Id) + "';") orderDb.Exec("XA ROLLBACK '" + cast.ToString(list[k1].Id) + "';") } list, _ = settle.OrderTransHandler.GetList("tx1 < 2 or tx2 < 2") for k1 := range list { if list[k1].Tx1 != 2 { misunDb.Exec("XA COMMIT '" + cast.ToString(list[k1].Id) + "';") } if list[k1].Tx2 != 2 { orderDb.Exec("XA COMMIT '" + cast.ToString(list[k1].Id) + "';") } } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章