# 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. 可靠消息只保证消息可靠,不保证消息重发,故消费方需要做幂等处理。