# openMqOperate **Repository Path**: exixo/openMqOperate ## Basic Information - **Project Name**: openMqOperate - **Description**: 使用接口动态代理的方式,整合熔断和降级对mq的发送者进行封装的工具服务,并整合进springboot进行自动装配。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-06-01 - **Last Updated**: 2021-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openMqOperate #### 介绍 使用接口动态代理的方式,整合熔断和降级对mq的发送者进行封装的工具服务,并整合进springboot进行自动装配。 #### 软件架构 1. 使用springboot的自动装配机制 快速整合进项目。 2. 基于线程池的超时隔离机制做降级和熔断 需要像Feign的方式去进行声明降级和熔断实现。 3. 基于注解的方式对要发送消息的接口进行标注。 4. 基于Jdk动态代理的方式 提取了大部分重复的发送逻辑代码。 #### 安装教程 建议clone源码自定义打包上传到maven私仓 #### 使用说明 1. springboot启动类 或者 配置类上 使用@EnableMqOperateClients注解 2. 配置文件的配置项详见 MqConfig 和 MqSentinelConfig 配置类 有详细的说明 3. 发送的接口示例如下 ``` @MqOperateClient public interface TestClient { MqOperateResult testSendNormal(MqMessage message); //@SendAsync void testSendAsync(MqMessage message, IMqAsyncSendListener listener); } ``` 4. 熔断降级的代码示例如下 ``` @MqOperateClient(fallback = FallBackTest.class, blockHandler = BreakerTest.class) public interface IFallBackAndBrokerClientTest { MqOperateResult sendTest(MqMessage message); } @Component public class BreakerTest implements IFallBackAndBrokerClientTest { @Override public MqOperateResult sendTest(MqMessage message) { System.out.println("BreakerTest 熔断开始执行"); return null; } } @Component public class FallBackTest implements IFallBackAndBrokerClientTest{ @Override public MqOperateResult sendTest(MqMessage message) { System.out.println("FallBackTest 降级执行"); return null; } } ``` 5. 最后调用的时候 在spring的bean中注入发送接口 然后正常调用就可以了,这样能够使用接口的名字和注释方便的标识出当前这个发送消息的含义,在后期进行维护的时候也可以方便的找到一个服务里面所有的发送接口,不会像直接调用各种mq提供的producer的api,混合在业务代码中维护起来很难。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)