阅读930 返回首页    go 阿里云 go 技术社区[云栖]


TXC for MQ 快速入门__TXC for MQ_消息队列 MQ-阿里云

本文介绍在 MQ 里使用 TXC 的具体步骤和注意事项。

1. 登陆控制台

从浏览器中访问 MQ 控制台, 建议使用 Chrome 浏览器获得最佳体验。

2. 创建并申请事务分组

在控制台左侧菜单选择事务总览创建事务分组,输入自定义的事务分组名称创建事务分组。

刚创建的事务分组处于等待状态,这时 TXC 管理人员会在后台帮您关联一个可用的 TXC 集群,开通后的分组显示为开通状态。这个唯一事务分组号(例如: test111.1325460969176422.BJ)是客户端 TXC 配置 Scanner 中的必要参数。

3. 创建 MQ 应用

下载 TXC SDK,并参考 MQ 快速入门创建客户端和服务端应用。

(1) 创建基于 TXC 的 MQ Producer

Spring 配置文件中需要指定 MTRelationShipManager, mtBranchInterceptor, mtServicesClassList, TxcMQProducerImpl 这些 bean 并建立关联。

注意: MTRelationShipManager 一定要先于 TxcTransactionScaner 进行声明。

  1. <bean class="com.taobao.txc.client.aop.MTRelationShipManager">
  2. <property name="beanNames" ref="mtServicesClassList" />
  3. <property name="interceptorNames">
  4. <list>
  5. <value>mtBranchInterceptor</value>
  6. </list>
  7. </property>
  8. <property name="order" value="1"/>
  9. <property name="proxyTargetClass" value="false"/>
  10. </bean>

Spring 配置文件中需要指定使用的事务分组名称, AK 以及 SK,如:

  1. <bean class="com.taobao.txc.client.aop.TxcTransactionScaner">
  2. <constructor-arg value="test111.1325460969176422.BJ"/>
  3. <accessKey>xxx</accessKey>
  4. <secretKey>xxx</secretKey>
  5. </bean>

在参与 TXC 事务的业务方法 Bean 中添加 TXC 注解,如:

  1. @TxcTransaction(appName = "myapp")
  2. public void hello() {
  3. ...
  4. }

并将带有 TXC 注解的业务 Bean 声明在 Spring 配置文件中,如:

  1. <bean id="bussiness" class="com.taobao.txc.tests.Client" init-method="init"/>

添加 MtBranchInterceptor, TxcMQProducerImpl 并建立关联关系。

  1. <bean id="mtBranchInterceptor" class="com.taobao.txc.resourcemanager.mt.MtBranchInterceptor"/>
  2. <bean id="mtServicesClassList" class="org.springframework.beans.factory.config.ListFactoryBean">
  3. <property name="sourceList">
  4. <list>
  5. <value>com.taobao.txc.rm.mq.TxcMQProducer</value>
  6. </list>
  7. </property>
  8. </bean>
  9. <bean id="txc_mq_producer" class="com.taobao.txc.rm.mq.TxcMQProducerImpl">
  10. <constructor-arg name="ProducerId" value="PID_txc_mq_prod_test"/>
  11. <constructor-arg name="AccessKey" value="xxxx"/>
  12. <constructor-arg name="SecretKey" value="xxxx"/>
  13. </bean>

说明: Producer ID 为 MQ 产品中申请的发送者标识,具体请参考 MQ 控制台

注意: AccessKey 为阿里云账户的 AK,SecretKey 为阿里云账户的 SK,可以在阿里云用户中心查询。

客户端 classpath 需要添加 TXC MQ SDK 的包。

(2) 创建 MQ Consumer

使用 MQ SDK 创建标准 Consumer,具体请参考 MQ 相关 SDK 接入文档。

其他 MQ 开发包的依赖请参考 MQ 的开发文档。

4. 部署并启动应用

在 ECS 服务器上运行使用 TXC 的 MQ 应用,当 MQ Producer 在 TXC 注解了的函数范围内时,该 MQ 将和该函数范围内的多个数据源中的数据会保持强一致,保证了数据库操作与消息发送的分布式事务,数据库操作提交,则消息一定发送成功;数据库操作回滚,则消息一定不会被发送出去。

说明:TXC for MQ 代码样例,包含 TXC 案例、TXC+MQ 案例、TXC+MQ+EDAS 案例。

最后更新:2016-11-23 16:04:17

  上一篇:go 状态不一致___异常类别_产品使用问题_消息队列 MQ-阿里云
  下一篇:go TXC for MQ 样例工程__TXC for MQ_消息队列 MQ-阿里云