# hms-rocketmq-tx
#### 介绍
基于rocketmq最终消息数分布式据库事务
代码 https://gitee.com/hbhk/hms-rocketmq-tx
#### 软件架构
1、spring-boot
2、支持jdbc驱动的数据库
3、rocketmq(也可以自己重写其他mq链接)
4、利用spring事务管理- 执行前,将mq消息保留到本地表中,进行重试,保证最终一致性
#### 安装教程
1. 下载代码deploy到本地私服
#### 使用说明
1. spring-boot项目依赖
```
<dependency>
<groupId>org.hbhk.hms</groupId>
<artifactId>hms-rocketmq-tx</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
```
2. 启用事务组件
```
@SpringBootApplication(scanBasePackages = "org.hbhk.aili")
// 1、启用mq组件
@EnableMq
// 2、 开启事务 ,且在指定service方法开启事务@Transactional()
@EnableTransactionManagement()
public class HmsTxApp {
public static void main(String[] args) throws Exception {
//指定某个节点为失败重试处理
System.setProperty("mqtx.retry", "on");
SpringApplication.run(HmsTxApp.class, args);
}
}
```
3. 配置
添加mq链接配置
hms.mq.namesrvAddr=127.0.0.1:9876
备注:多个mq链接配置时,直接配置 对应生产者和消费者注解上面
4. 生产者和消费者
```
/**
*
* 1、配置事务表
* 2、配置发送topic
*/
@MqTxProducer(txTable = "hms_mq_tx", topic = "hbhk")
public interface ITestSendMqMsg extends MqMessageSender<TBUser2> {
}
```
```
/**
*
* 1、配置消费topic
* 2、配置消费组(全局唯一)
*/
@MqConsumer(topic = "hbhk", groupName = "hbhk-g")
@Service
public class MqconsumerTest extends MqMessageListener<TBUser> {
@Override
public void onMessage(Map<String, String> header, TBUser message) {
}
}
```
5、执行mq消息事务表脚本