# reliablemessage-spring-boot-starter
**Repository Path**: tech-famer/reliablemessage-spring-boot-starter
## Basic Information
- **Project Name**: reliablemessage-spring-boot-starter
- **Description**: 一款基于rabbitmq的springboot可靠消息组件,支持事务消息、消息回滚、失败重发等。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2021-11-02
- **Last Updated**: 2021-11-08
## Categories & Tags
**Categories**: spring-boot-ext
**Tags**: SpringBoot, RabbitMQ, 可靠消息
## README
# reliablemessage-spring-boot-starter
#### 介绍
一款基于rabbitmq的springboot可靠消息组件,支持事务消息、消息回滚、失败重发等。
#### 安装教程
项目有三种安装方式
1. 通过maven命令:`mvn clean package deploy`将项目发布到私有仓库,在使用的项目中加入组件依赖,如下:
```
com.farmer.reliablemessage
reliablemessage-spring-boot-starter
1.0-SNAPSHOT
```
2. 通过maven命令:`mvn clean package install`将项目发布到本地仓库,在使用的本地项目中加入组件依赖,如下:
```
com.farmer.reliablemessage
reliablemessage-spring-boot-starter
1.0-SNAPSHOT
```
3. 将项目源码直接拷贝到需要的项目中直接使用。
#### 使用说明
1. 组件会将消息入库,消息数据库主键为VARCHAR()类型,使用者需要提供生成主键的spring bean,
该spring bean需要实现接口`com.farmer.reliablemessage.api.IDApi`;
组件内置了默认主键生成类`com.farmer.reliablemessage.DefaultIDApi`,算法为UUID,
使用者可以自行实现主键生成算法,如雪花算法等。以下仅为示例:
```
@Configuration
public class IdConfig {
@Bean
public IDApi idApi(){
return new IDApi() {
@Override
public String nextID() {
return UUID.randomUUID().toString().replace("-","");
}
};
}
}
```
2. 在需要发送消息的类中引入可靠消息组件提供的MQTemplate,如下:
```
@Service
public class TestService {
@Autowired
private MQTemplate mqTemplate;
@Transactional
public void test(){
mqTemplate.saveAndSendMessage("exchangeName","routingKey","payload");
}
}
```
组件只提供一个方法saveAndSendMessage,参数1为交换机名称,参数2为routingKey,参数3为消息体。
#### 注意
1. 可靠消息支持事务,在事务方法中使用可靠消息,可靠消息会在事务提交后发送,事务回滚消息自动回滚。
2. 1中的事务提交和回滚支持传播,如:A方法添加@Transactional注解,A中可靠消息支持1中描述,
A调用B方法若B没有添加@Transactional注解或者B添加@Transactional(propagation = Propagation.REQUIRED)注解,
则B中可靠消息也支持1中描述。
3. 可靠消息只保证消息可靠,不保证消息重发,故消费方需要做幂等处理。