本樣例介紹如何把 MQ 事務消息的發送納入 GTS 管理的全局事務。

前提條件

在使用 sample-txc-mq 樣例前,請先完成以下工作:

樣例邏輯說明

A 賬戶向 B 賬戶轉賬 10 次,前 5 次成功,后 5 次失敗。在轉賬成功后,通過 MQ 增加了一個通知,告知轉賬成功。使用 GTS 事務保證了賬戶 A 和 B 總金額始終不變,同時保證了只有轉賬成功的情況下才能收到 MQ 的消息通知。

搭建樣例

  1. 下載樣例 txc-yun-sample并上傳到 ECS 上。
  2. 在兩個 RDS 實例中分別執行樣例中 sql 目錄下的 txc_sample1.sql txc_sample2.sqltxc_undo_log.sql,創建數據表。
  3. 修改樣例配置。
    1. 打開 sample-txc-mq/src/main/resources 目錄下的 txc-mq-client-context.xml 文件。
    2. constructor-arg value 的值替換為申請好的 GTS 事務分組 ID。
    3. 將 <bean id="txc_mq_producer" class="com.taobao.txc.rm.mq.TxcMQProducerImpl"> 下的參數替換為申請的 MQ 相關配置。
    4. accessKeysecretKey 的值修改為您實際賬號的值。
      說明 請使用主賬戶的Access Key ID和Access Key Secret。如果使用RAM子賬戶的Access Key ID和Access Key Secret,需要先使用主賬戶對子賬戶進行授權。
  4. sample-txc-mq 目錄下執行 build.sh, 編譯樣例工程。
  5. 編譯完成后,在 sample-txc-mq/client/bin 目錄下執行 run.sh,啟動樣例。
    查看 MQ 的 Provider 的運行結果。
  6. 將 sample-mq-consumer 樣例工程上傳到 ECS。
  7. sample-mq-consumer/src/main/java/com/taobao/txc/tests 路徑下打開 SMSListener.java,修改其中的 xxxxx 為申請的 MQ 配置。
  8. sample-mq-consumer 目錄下執行 build.sh, 編譯樣例工程。
  9. 編譯完成后,在 sample-mq-consumer/client/bin 目錄下執行 run.sh,啟動樣例。
    可以消費掉剛剛 sample-txc-mq 工程生產出來的 MQ 消息。