# easy-framework **Repository Path**: ieee802.3/easy-framework ## Basic Information - **Project Name**: easy-framework - **Description**: 公共框架封装 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-10-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easy-framework #### 介绍 easy-framework是一套能够帮助企业快速搭建基本开发框架的套件,目前已集成了activemq、redis(单机或集群均可支持,包括redisson)、swagger、xxl-job、xxl-sso,可做到开箱即用,引用+配置即可,旨在帮助大家避免在框架搭建、集成其他组件上浪费大量的时间,将关注点放在业务逻辑开发上,从而提高开发效率。 samples工程中有丰富的案例可供参考学习。 #### 软件架构 软件架构说明 #### 安装教程 1. 集成activemq 集成的activemq可支持队列消息、发布/订阅消息、延迟队列消息等。 首先引用easy-activemq包 ```xml org.easy.framework easy-activemq 1.0.0-SNAPSHOT ``` 然后在application.properties中添加activemq相关的配置 ``` #-------------------------------------activemq ccbao.core.active.mq.brokerurl=tcp://192.168.1.10:61616 ccbao.core.active.mq.userName=admin ccbao.core.active.mq.password=admin #mq message prefix, be used to switch environment, like dev, or test, pdt environment set empty common_mq_prefix= org_easy_mq_send=org.easy.mq.send${common_mq_prefix} ``` 消息的发送 ```java package org.component.integration.samples.mq; import java.util.Map; import java.util.UUID; import org.easyframework.activemq.EasyMqSender; import org.easyframework.core.entity.ResponseResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("mq") public class MqController { @Autowired private EasyMqSender easyMqSender; @Value("${org_easy_mq_send}") private String queueTopic; @RequestMapping("send") @ResponseBody public ResponseResult send(@RequestBody Map param) { String msg = UUID.randomUUID().toString(); System.out.println("发送消息内容:" + msg); easyMqSender.send(queueTopic, msg); return ResponseResult.getSuccess(msg); } } ``` 消息的接收 ```java package org.component.integration.samples.mq; import javax.jms.JMSException; import javax.jms.Message; import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.listener.adapter.MessageListenerAdapter; import org.springframework.jms.support.converter.MessageConversionException; import org.springframework.stereotype.Component; @Component("mqMessageListener") public class MqMessageListener extends MessageListenerAdapter { @JmsListener(destination = "${org_easy_mq_send}", concurrency = "5-10") public void onMessage(Message message) { try { Object bean = getMessageConverter().fromMessage(message); System.out.println("接收到消息内容:" + bean.toString()); } catch (MessageConversionException e) { e.printStackTrace(); } catch (JMSException e) { e.printStackTrace(); } } } ``` 2. 集成redis 集成的redis可支持单机模式、集群模式,同时集成了redisson,集群模式下,可用redisson的RedLock来做高性能的分布式锁。 引用包 ```xml org.easy.framework easy-redis 1.0.0-SNAPSHOT ``` 在application.properties中增加redis的配置 ``` #-------------------------------------redis config #redis.mode, 1 single, 2 cluster redis.mode=1 redis.hostname=192.168.1.10 redis.port=6379 redis.password= redis.timeout=10000 redis.maxIdle=300 #redis.maxActive=600 redis.maxTotal=1000 redis.maxWaitMillis=1000 redis.minEvictableIdleTimeMillis=300000 redis.numTestsPerEvictionRun=1024 redis.timeBetweenEvictionRunsMillis=30000 redis.testOnBorrow=true redis.testWhileIdle=true spring.redis.cluster.nodes=192.168.1.10:7001,192.168.1.10:7002,192.168.1.10:7003,192.168.1.10:7004,192.168.1.10:7005,192.168.1.10:7006 spring.redis.cluster.max-redirects=3 ``` 其中集群需要6台实例,具体安装方式比较繁琐,由于好像gitee不支持上传压缩包,所以安装包没传上来,需要的同学可以发送邮件索取:ieee802.3@hotmail.com。 单机模式可将redis.mode配置为1,集群模式可将redis.mode设置为2,其他的配置项默认就好了,有密码就配置密码,都是常规操作。 使用: ```java package org.component.integration.samples.controller; import java.util.Map; import java.util.UUID; import org.easyframework.core.entity.ResponseResult; import org.easyframework.redis.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("redis") public class RedisController { @Autowired private RedisUtil redisUtil; @RequestMapping("add") @ResponseBody public ResponseResult add(@RequestBody Map param) { String key = UUID.randomUUID().toString(); redisUtil.setString(key, param.get("value")); return ResponseResult.getInst(ResponseResult.SUCCESS, key); } @RequestMapping("query") @ResponseBody public ResponseResult query(@RequestBody Map param) { String value = redisUtil.getString(param.get("key")); return ResponseResult.getInst(ResponseResult.SUCCESS, value); } @RequestMapping("remove") @ResponseBody public ResponseResult remove(@RequestBody Map param) { return ResponseResult.getInst(ResponseResult.SUCCESS, redisUtil.del(param.get("key"))); } } ``` 在需要用到的地方注入RedisUtil就可以用了。 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request 这里要感谢一下xxl系列的作者许雪里先生,这套框架的调度任务和单点登录业务都是集成自许先生的xxl-job和xxl-sso, 他在开源公共组件上的贡献即为令人瞩目,再次感谢!!! #### 码云特技 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/)