package manage.service;
import manage.dao.ManageDao;
import manage.util.RedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.*;
@Service
public class ManageService implements ManageDao {
private static final Logger LOGGER = LoggerFactory.getLogger(ManageService.class);
private static final String REDIS_KEY_OF_KETTLE_NAMES = "kettleNames";
private static final String EDIT_KETTLE_LOCK_URL = "http://kettleTask/ktask/editKettleConfig";
private static final String GET_KETTLE_LOCK_INFO_URL = "http://kettleTask/ktask/getKettleLockInfo";
private static final String CONCURRENCY_KEY = "concurrency";
private static final String KETTLE_NAME_KEY = "kettleName";
@Autowired
RedisUtil redisUtil;
@Autowired
RestTemplate restTemplate;
/**
* 获取所有kettle配置列表
* @return
*/
@Override
public List<Map<String,Object>> listOfKettleConfig(){
List<Map<String,Object>> listOfKettleConfig = new LinkedList<Map<String,Object>>();
Set<Object> kettleNameSet = redisUtil.smembers(REDIS_KEY_OF_KETTLE_NAMES);
Iterator<Object> iterator = kettleNameSet.iterator();
while(iterator.hasNext()){
String kettleName = iterator.next().toString();
Map<String,Object> kettleConfigMap = redisUtil.hgetall(kettleName);
kettleConfigMap.put(KETTLE_NAME_KEY, kettleName);
listOfKettleConfig.add(kettleConfigMap);
}
return listOfKettleConfig;
}
/**
* 保存kettle配置,包括名字和配置
* @param kettleName
* @param kettleConfigMap
* @return
*/
@Override
public int saveKettleConfig(String kettleName, Map<String,Object> kettleConfigMap)throws Exception {
Integer lockNum = "".equals((String)kettleConfigMap.get(CONCURRENCY_KEY)) ? 1 : Integer.parseInt((String)kettleConfigMap.get(CONCURRENCY_KEY));
editKettleLockNum(kettleName, lockNum);
redisUtil.sadd(REDIS_KEY_OF_KETTLE_NAMES, kettleName);
Iterator<Map.Entry<String, Object>> iterator = kettleConfigMap.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
redisUtil.hset(kettleName, entry.getKey(), entry.getValue());
}
return 1;
}
/**
* 修改kettle名
* @param oldKettleName
* @param newKettleName
* @return
*/
@Override
public int updateKettleName(String oldKettleName, String newKettleName) throws Exception{
try {
//check if repeat
Set<Object> keySet = redisUtil.smembers(REDIS_KEY_OF_KETTLE_NAMES);
keySet.remove(oldKettleName);
if(keySet.contains(newKettleName)){
throw new Exception("kettle名重复");
}
if(redisUtil.exists(oldKettleName)){
redisUtil.rename(oldKettleName, newKettleName);
}
redisUtil.srem(REDIS_KEY_OF_KETTLE_NAMES, oldKettleName);
redisUtil.sadd(REDIS_KEY_OF_KETTLE_NAMES, newKettleName);
}catch (Exception e){
LOGGER.error(e.getMessage());
}
return 1;
}
/**
* 删除指定name的kettle配置
* @param kettleName
* @return
*/
@Override
public boolean deleteKettleConfig(String kettleName) {
boolean configRemoveSuccess = redisUtil.del(kettleName);
boolean keyRemoveSuccess = redisUtil.srem(REDIS_KEY_OF_KETTLE_NAMES, kettleName);
return keyRemoveSuccess && configRemoveSuccess;
}
/**
* 根据name获取kettle配置
* @param kettleName
* @return
*/
public Map<String,Object> getKettleConfigByName(String kettleName){
if(null == kettleName || "".equals(kettleName)){
return null;
}
Map<String,Object> configMap = redisUtil.hgetall(kettleName);
return configMap;
}
/**
* 判断是否存在重名
* @param kettleName
* @return
*/
public boolean checkKettleName(String kettleName){
Set<Object> kettleSet = redisUtil.smembers(REDIS_KEY_OF_KETTLE_NAMES);
return kettleSet.contains(kettleName);
}
/**
* 修改kettle并发量数量
*/
public Map<String, Object> editKettleLockNum(String kettleName, int lockNum)throws Exception {
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("kettleName", kettleName);
paramMap.add("lockNum", lockNum);
Map<String, Object> lockInfoMap = restTemplate.postForObject(EDIT_KETTLE_LOCK_URL, paramMap, Map.class);
if(!"S".equals(lockInfoMap.get("message"))) {
throw new Exception((String)lockInfoMap.get("message"));
}
return lockInfoMap;
}
/**
* 获取并发情况
*/
public Map<String, Object> getConcurrencyInfoByName(String name) {
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("kettleName", name);
Map<String, Object> lockInfoMap = restTemplate.postForObject(GET_KETTLE_LOCK_INFO_URL, paramMap, Map.class);
return lockInfoMap;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于kettle carte服务开发的管理kettle任务的系统,可以管理每台kettle的信息,控制每台kettle的任务并发量.zip (66个子文件)
kettleTool-master
mvnw.cmd 6KB
pom.xml 4KB
zuul
pom.xml 702B
src
main
resources
Application.yml 285B
java
com
zuul
Application.java 465B
src
test
java
com
das
kettle
KettleApplicationTests.java 2KB
main
resources
kettleConfig.properties 208B
application.properties 247B
java
com
das
kettle
web
KettleController.java 1KB
service
AbstractKettleWork.java 3KB
KettleWork.java 542B
KettleJobService.java 4KB
KettleTransformationService.java 3KB
exception
KettleWorkPathException.java 176B
aop
KettleRunAop.java 1KB
KettleApplication.java 698B
util
RedisUtil.java 2KB
KettleUtil.java 3KB
config
RedisConfig.java 3KB
RemoteSlaveServerConfig.java 2KB
KettleConfig.java 2KB
.mvn
wrapper
maven-wrapper.properties 218B
maven-wrapper.jar 50KB
MavenWrapperDownloader.java 5KB
gateway
pom.xml 495B
src
main
resources
application.yml 298B
java
META-INF
MANIFEST.MF 5KB
com
gateway
eureka
Application.java 403B
manage
pom.xml 493B
src
test
java
manage
test
ManageTest.java 1KB
main
resources
Application.yml 472B
templates
concurrencyInfoPage.html 982B
index.html 3KB
editPage.html 2KB
static
js
jquery
jquery-3.3.1.js 265KB
jquery-3.3.1.min.js 85KB
java
manage
Application.java 612B
web
ManageController.java 4KB
dao
ManageDao.java 381B
rest
config
RestConfig.java 458B
service
ManageService.java 5KB
redis
config
RedisConfig.java 3KB
entity
KettleConfig.java 1KB
util
RedisUtil.java 4KB
META-INF
MANIFEST.MF 5KB
kettleTaskCenter
pom.xml 504B
src
test
java
com
das
kettle
KettleApplicationTests.java 2KB
main
resources
kettleConfig.properties 208B
application.properties 544B
java
META-INF
MANIFEST.MF 5KB
com
das
kettle
web
KettleController.java 3KB
service
ConfigService.java 2KB
AbstractKettleWork.java 3KB
KettleWork.java 553B
KettleJobService.java 4KB
KettleTransformationService.java 3KB
exception
KettleWorkPathException.java 176B
aop
KettleRunAop.java 2KB
KettleApplication.java 655B
util
RedisUtil.java 4KB
KettleUtil.java 3KB
lock
Lock.java 3KB
config
RedisConfig.java 3KB
RemoteSlaveServerConfig.java 1KB
META-INF
MANIFEST.MF 18KB
mvnw 10KB
共 66 条
- 1
资源评论
博士僧小星
- 粉丝: 1774
- 资源: 5875
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功