本样例介绍如何把 MQ 事务消息的发送纳入 GTS 管理的全局事务。
前提条件
在使用 sample-txc-mq 样例前,请先完成以下工作:
样例逻辑说明
A 账户向 B 账户转账 10 次,前 5 次成功,后 5 次失败。在转账成功后,通过 MQ 增加了一个通知,告知转账成功。使用 GTS 事务保证了账户 A 和 B
总金额始终不变,同时保证了只有转账成功的情况下才能收到 MQ 的消息通知。
搭建样例
- 下载样例 txc-yun-sample并上传到 ECS 上。
- 在两个 RDS 实例中分别执行样例中 sql 目录下的 txc_sample1.sql 、 txc_sample2.sql 和 txc_undo_log.sql,创建数据表。
- 修改样例配置。
- 打开 sample-txc-mq/src/main/resources 目录下的 txc-mq-client-context.xml 文件。
- 将 constructor-arg value 的值替换为申请好的 GTS 事务分组 ID。
- 将 <bean id="txc_mq_producer" class="com.taobao.txc.rm.mq.TxcMQProducerImpl"> 下的参数替换为申请的
MQ 相关配置。
- 将 accessKey 和 secretKey 的值修改为您实际账号的值。
说明 请使用主账户的Access Key ID和Access Key Secret。如果使用RAM子账户的Access Key ID和Access Key Secret,需要先使用主账户对子账户进行授权。
- 在 sample-txc-mq 目录下执行 build.sh, 编译样例工程。
- 编译完成后,在 sample-txc-mq/client/bin 目录下执行 run.sh,启动样例。
查看 MQ 的 Provider 的运行结果。
- 将 sample-mq-consumer 样例工程上传到 ECS。
- 在 sample-mq-consumer/src/main/java/com/taobao/txc/tests 路径下打开 SMSListener.java,修改其中的 xxxxx 为申请的 MQ 配置。
- 在 sample-mq-consumer 目录下执行 build.sh, 编译样例工程。
- 编译完成后,在 sample-mq-consumer/client/bin 目录下执行 run.sh,启动样例。
可以消费掉刚刚 sample-txc-mq 工程生产出来的 MQ 消息。