本样例介绍如何把 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 消息。