# 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/)