调整线程池数量 优化代码

master
bynt 8 months ago
parent 7a4486ed8d
commit cd444b5684

@ -54,4 +54,11 @@ public class DeliveryProperties {
private String dmpDownPath;
@ApiModelProperty("建模下载地址")
private String modelPath;
@ApiModelProperty("建模下载地址")
private String modelUrl;
}

@ -79,4 +79,8 @@ public class ModeRecord extends BaseEntity implements Serializable {
@Column(name = "tag_str")
private String tagStr;
@ApiModelProperty("下载地址")
@Column(name = "down_str")
private String downUrl;
}

@ -63,8 +63,8 @@ public interface ModeRecordRepository extends JpaRepository<ModeRecord, Long>, J
* @return
*/
@Modifying
@Query("UPDATE ModeRecord set recordStatus = ?1,buildTime = ?2,sendNum = ?3 where id = ?4")
int updateStatusAndTimeById(Integer num, DateTime date, Integer count, Long id);
@Query("UPDATE ModeRecord set recordStatus = ?1,buildTime = ?2,sendNum = ?3 where id in ?4")
int updateStatusAndTimeById(Integer num, DateTime date, Integer count, List<Long> id);
/**

@ -15,11 +15,13 @@
*/
package com.baiye.modules.platform.rest;
import cn.hutool.core.collection.CollUtil;
import com.baiye.annotation.Inner;
import com.baiye.annotation.Log;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.http.CommonResponse;
import com.baiye.modules.platform.service.ModeRecordService;
import com.baiye.modules.platform.service.dto.BuildTaskDTO;
import com.baiye.modules.platform.service.dto.ModeRecordQueryCriteria;
import com.baiye.util.SecurityUtils;
import io.swagger.annotations.Api;
@ -70,11 +72,11 @@ public class ModeRecordController {
@ApiOperation("创建任务")
@GetMapping("/build")
public CommonResponse<Object> buildModel(@RequestParam("id") Long id, @RequestParam(value = "actName") String actName,
@RequestParam("actId") String actId) {
return Boolean.TRUE.equals(modeRecordService.sendDataByActNameAndActId(id, actName, actId)) ?
CommonResponse.createBySuccess() : CommonResponse.createByError();
@PostMapping("/build")
public CommonResponse<Object> buildModel(@RequestBody BuildTaskDTO buildTaskDTO) {
return Boolean.TRUE.equals(modeRecordService.sendDataByActNameAndActId
(CollUtil.newArrayList(buildTaskDTO.getIds()), buildTaskDTO.getActName(), buildTaskDTO.getActId())) ?
CommonResponse.createBySuccess() : CommonResponse.createByError();
}

@ -4,6 +4,8 @@ import com.baiye.modules.platform.service.dto.ModeRecordQueryCriteria;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* @author Enzo
* @date : 2024/1/4
@ -46,10 +48,10 @@ public interface ModeRecordService {
/**
*
*
* @param id
* @param ids
* @param actName
* @param actId
* @return
*/
Boolean sendDataByActNameAndActId(Long id, String actName, String actId);
Boolean sendDataByActNameAndActId(List<Long> ids, String actName, String actId);
}

@ -0,0 +1,22 @@
package com.baiye.modules.platform.service.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
/**
* @author Enzo
* @date : 2024/1/16
*/
@Data
public class BuildTaskDTO {
@NotEmpty(message = "分发任务不能为空")
private Long[] ids;
@NotBlank(message = "actName不能为空")
private String actName;
@NotBlank(message = "actId不能为空")
private String actId;
}

@ -25,4 +25,8 @@ public class ImeiDTO implements Serializable {
@ApiModelProperty(value = "tag")
private String tag;
@ApiModelProperty(value = "time")
private String time;
}

@ -66,5 +66,8 @@ public class ModelRecordDto extends BaseDTO implements Serializable {
@ApiModelProperty("层级")
private Integer treeLevel;
@ApiModelProperty("下载地址")
private String downUrl;
private List<ModelRecordDto> treeList;
}

@ -18,6 +18,7 @@ import com.baiye.modules.platform.service.dto.ImeiDTO;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@ -70,8 +71,10 @@ public class DeliveryRecordServiceImpl implements DeliveryRecordService {
List<ExchangeStripsDTO.Data> list = Lists.newArrayList();
dtoList.forEach(imeiDTO -> {
ExchangeStripsDTO.Data data = new ExchangeStripsDTO.Data();
data.setData(Base64.encode(imeiDTO.getImei().concat(StrPool.COMMA).concat(imeiDTO.getTag())));
list.add(data);
if (StringUtils.isNotBlank(imeiDTO.getImei()) && StringUtils.isNotBlank(imeiDTO.getTag())) {
data.setData(Base64.encode(imeiDTO.getImei().concat(StrPool.COMMA).concat(imeiDTO.getTag())));
list.add(data);
}
});
ExchangeStripsDTO build = ExchangeStripsDTO.builder().batchId(taskImeiName).reqId
(RandomUtil.randomString(DefaultNumberConstants.TEN_NUMBER)).orgCode

@ -2,12 +2,11 @@ package com.baiye.modules.platform.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.text.csv.CsvData;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvRow;
import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.text.csv.*;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.baiye.config.properties.DeliveryProperties;
@ -38,9 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -94,9 +91,12 @@ public class ModelRecordServiceImpl implements ModeRecordService {
}
// 去除重复数据
List<ImeiDTO> dtoArrayList = Lists.newArrayList(Sets.newHashSet(stringList));
// 保存文件
String downUrl = getDownUrl(stringList);
// 保存父类数据
Long recordId = saveRecord(taskName, uploadType, userId, (long) DefaultNumberConstants.ZERO_NUMBER,
DefaultNumberConstants.ONE_NUMBER, CharSequenceUtil.EMPTY, dtoArrayList);
DefaultNumberConstants.ONE_NUMBER, CharSequenceUtil.EMPTY, downUrl, dtoArrayList);
// tag分组
Map<String, List<ImeiDTO>> collect = dtoArrayList.stream().
collect(Collectors.groupingBy(ImeiDTO::getTag));
@ -105,7 +105,7 @@ public class ModelRecordServiceImpl implements ModeRecordService {
List<ImeiDTO> imeiDTOList = entry.getValue();
// 保存子类数据
Long childrenId = saveRecord(taskName, uploadType, userId, recordId,
DefaultNumberConstants.TWO_NUMBER, tag, imeiDTOList);
DefaultNumberConstants.TWO_NUMBER, tag, null, imeiDTOList);
if (uploadType < DefaultNumberConstants.TWO_NUMBER) {
// 每次100000 数据
List<List<ImeiDTO>> partition = Lists.partition
@ -128,6 +128,22 @@ public class ModelRecordServiceImpl implements ModeRecordService {
return Boolean.TRUE;
}
private String getDownUrl(List<ImeiDTO> stringList) {
String uuid = IdUtil.fastSimpleUUID();
String fileName = deliveryProperties.getModelUrl().concat(StrPool.SLASH).concat(uuid);
String csvPath = fileName.concat(StrPool.DOT).concat(FileConstant.CSV_FILE_SUB_NAME);
CsvWriter writer = CsvUtil.getWriter(csvPath, CharsetUtil.CHARSET_UTF_8);
String zipPath = fileName.concat(FileConstant.ZIP_FILE_SUB_NAME);
writer.writeBeans(stringList);
writer.close();
// 设置压缩文件
CompressUtil.decryptionCompression(zipPath, csvPath, null);
String filePath = zipPath.substring
(zipPath.lastIndexOf(StrPool.SLASH) + DefaultNumberConstants.ONE_NUMBER);
cn.hutool.core.io.FileUtil.del(csvPath);
return deliveryProperties.getModelPath().concat(filePath);
}
@Override
public String findPath(Long downId) {
ModeRecord downRecord = modeRecordRepository.findById(downId).orElseGet(ModeRecord::new);
@ -150,38 +166,41 @@ public class ModelRecordServiceImpl implements ModeRecordService {
@Override
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
public Boolean sendDataByActNameAndActId(Long id, String actName, String actId) {
public Boolean sendDataByActNameAndActId(List<Long> ids, String actName, String actId) {
List<String> stringList = Lists.newArrayList();
ModeRecord downRecord = modeRecordRepository.findById(id).orElseGet(ModeRecord::new);
if (ObjectUtil.isNull(downRecord) ||
downRecord.getRecordStatus() != DefaultNumberConstants.ONE_NUMBER) {
throw new BadRequestException("该批次暂不能建模!");
for (Long id : ids) {
ModeRecord downRecord = modeRecordRepository.findById(id).orElseGet(ModeRecord::new);
if (ObjectUtil.isNull(downRecord) ||
downRecord.getRecordStatus() != DefaultNumberConstants.ONE_NUMBER) {
throw new BadRequestException("该批次暂不能建模!");
}
// 解压文件
String unzipPath = CompressUtil.unzipFiles
(deliveryProperties.getFileUrl(), downRecord.getUploadPath(), deliveryProperties.getZipPassword());
File unzipFile = new File(unzipPath);
File parseFile = Objects.requireNonNull
(unzipFile.listFiles())[DefaultNumberConstants.ZERO_NUMBER];
CsvReader reader = CsvUtil.getReader();
CsvData data = reader.read(parseFile);
// csv通配
data.getRows().forEach(str -> stringList.add(str.size() >
DefaultNumberConstants.THREE_NUMBER ? str.get(DefaultNumberConstants.TWO_NUMBER)
: str.get(DefaultNumberConstants.ZERO_NUMBER)));
cn.hutool.core.io.FileUtil.del(unzipPath);
// 修改状态
modeRecordRepository.updateStatusById(DefaultNumberConstants.TWO_NUMBER, id);
}
// 解压文件
String unzipPath = CompressUtil.unzipFiles
(deliveryProperties.getFileUrl(), downRecord.getUploadPath(), deliveryProperties.getZipPassword());
File unzipFile = new File(unzipPath);
File parseFile = Objects.requireNonNull
(unzipFile.listFiles())[DefaultNumberConstants.ZERO_NUMBER];
CsvReader reader = CsvUtil.getReader();
CsvData data = reader.read(parseFile);
// csv通配
data.getRows().forEach(str -> stringList.add(str.size() >
DefaultNumberConstants.THREE_NUMBER ? str.get(DefaultNumberConstants.TWO_NUMBER)
: str.get(DefaultNumberConstants.ZERO_NUMBER)));
cn.hutool.core.io.FileUtil.del(unzipPath);
// 修改状态
modeRecordRepository.updateStatusById(DefaultNumberConstants.TWO_NUMBER, id);
decryptTask.doRunSendTask(stringList, ids, actId, actName);
// 调用异步任务
decryptTask.doRunSendTask(stringList, id, actId, actName);
log.info("============= the request str list {} =============", stringList.size());
return Boolean.TRUE;
}
private Long saveRecord(String taskName, Integer uploadType, Long userId, Long parentId, Integer levelNum, String tagStr, List<ImeiDTO> dtoArrayList) {
private Long saveRecord(String taskName, Integer uploadType, Long userId, Long parentId, Integer levelNum, String tagStr, String downUrl, List<ImeiDTO> dtoArrayList) {
ModeRecord modeRecord = new ModeRecord();
modeRecord.setUserId(userId);
modeRecord.setTagStr(tagStr);
modeRecord.setDownUrl(downUrl);
modeRecord.setParentId(parentId);
modeRecord.setTaskName(taskName);
modeRecord.setTreeLevel(levelNum);
@ -201,24 +220,30 @@ public class ModelRecordServiceImpl implements ModeRecordService {
|| originalFilename.endsWith(FileConstant.XLSX_FILE_SUB_NAME)) {
ExcelReader reader = ExcelUtil.getReader(upload);
for (List<Object> objects : reader.read()) {
ImeiDTO dto = new ImeiDTO();
if (objects.size() > DefaultNumberConstants.ONE_NUMBER) {
ImeiDTO dto = new ImeiDTO();
dto.setTag(objects.get(DefaultNumberConstants.ONE_NUMBER).toString());
dto.setImei(objects.get(DefaultNumberConstants.ZERO_NUMBER).toString());
dtoList.add(dto);
}
if (objects.size() > DefaultNumberConstants.TWO_NUMBER) {
dto.setTime(objects.get(DefaultNumberConstants.TWO_NUMBER).toString());
}
dtoList.add(dto);
}
}
if (originalFilename.endsWith(FileConstant.CSV_FILE_SUB_NAME)) {
CsvReader reader = CsvUtil.getReader();
CsvData read = reader.read(upload);
for (CsvRow row : read.getRows()) {
ImeiDTO dto = new ImeiDTO();
if (row.size() > DefaultNumberConstants.ONE_NUMBER) {
ImeiDTO dto = new ImeiDTO();
dto.setTag(row.get(DefaultNumberConstants.ONE_NUMBER));
dto.setImei(row.get(DefaultNumberConstants.ZERO_NUMBER));
dtoList.add(dto);
}
if (row.size() > DefaultNumberConstants.TWO_NUMBER) {
dto.setTime(row.get(DefaultNumberConstants.TWO_NUMBER));
}
dtoList.add(dto);
}
}
}

@ -1,5 +1,6 @@
package com.baiye.timed;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.StrPool;
@ -81,67 +82,72 @@ public class DecryptTask {
// 取出线程池
Executor executor = threadConfig.getExecutor();
List<CompletableFuture<List<String>>> results = Lists.newArrayList();
// 取出值
List<String> sendList = dtoArrayList.stream().map(ImeiDTO::getImei).collect(Collectors.toList());
List<List<String>> partition = Lists.partition(sendList, DefaultNumberConstants.TWO_HUNDRED);
int batchNum = partition.size();
stopWatch.start();
for (List<String> list : partition) {
TimeUnit.MILLISECONDS.sleep(DefaultNumberConstants.ONE_THOUSAND);
// 异步线程池
CompletableFuture<List<String>> future = CompletableFuture.supplyAsync(() -> {
Gson gson = new Gson();
// 转换
String encryptStr = StringUtils.substringBeforeLast(Joiner.on(StrPool.COMMA).skipNulls().join(list), StrPool.COMMA);
// 构造请求
DecryptionJsonRequest build =
DecryptionJsonRequest.builder().cellphoneMd5
(encryptStr).requestId(RandomUtil.randomString(DefaultNumberConstants.TEN_NUMBER)).build();
try {
// 调用HTTP请求发送数据
DecryptionDTO decryptionDTO = JSONUtil.toBean(HttpUtil.post(decryptAddress, gson.toJson(build)), DecryptionDTO.class);
if (StringUtils.isNotBlank(decryptionDTO.getReason())
&& SecurityConstants.SUCCESS.equalsIgnoreCase(decryptionDTO.getReason()) && (StringUtils.isNotBlank(decryptionDTO.getCellPhone()))) {
List<String> parseArray = JSONUtil.toList(decryptionDTO.getCellPhone(), String.class);
if (!parseArray.isEmpty()) {
parseArray = parseArray.stream().filter
(StringUtils::isNotBlank).collect(Collectors.toList());
log.info("================ response size as {} ================", parseArray.size());
return EncryptPhoneUtil.encryptPhoneList(parseArray);
// 取出值并剔除空值
List<String> sendList = dtoArrayList.stream().map(ImeiDTO::getImei).filter(StringUtils::isNotBlank).collect(Collectors.toList());
if (CollUtil.isNotEmpty(sendList)) {
List<List<String>> partition = Lists.partition(sendList, DefaultNumberConstants.TWO_HUNDRED);
int batchNum = partition.size();
stopWatch.start();
for (List<String> list : partition) {
TimeUnit.MILLISECONDS.sleep(DefaultNumberConstants.ONE_THOUSAND);
// 异步线程池
CompletableFuture<List<String>> future = CompletableFuture.supplyAsync(() -> {
Gson gson = new Gson();
// 转换
String encryptStr = StringUtils.substringBeforeLast(Joiner.on(StrPool.COMMA).skipNulls().join(list), StrPool.COMMA);
// 构造请求
DecryptionJsonRequest build =
DecryptionJsonRequest.builder().cellphoneMd5
(encryptStr).requestId(RandomUtil.randomString(DefaultNumberConstants.TEN_NUMBER)).build();
try {
// 调用HTTP请求发送数据
DecryptionDTO decryptionDTO = JSONUtil.toBean(HttpUtil.post(decryptAddress, gson.toJson(build)), DecryptionDTO.class);
log.info("================ the decrypt result as {} ================",JSONUtil.toJsonStr(decryptionDTO.getResult()));
if (StringUtils.isNotBlank(decryptionDTO.getReason())
&& SecurityConstants.SUCCESS.equalsIgnoreCase(decryptionDTO.getReason()) && (StringUtils.isNotBlank(decryptionDTO.getCellPhone()))) {
List<String> parseArray = JSONUtil.toList(decryptionDTO.getCellPhone(), String.class);
if (!parseArray.isEmpty()) {
parseArray = parseArray.stream().filter
(StringUtils::isNotBlank).collect(Collectors.toList());
log.info("================ response size as {} ================", parseArray.size());
return EncryptPhoneUtil.encryptPhoneList(parseArray);
}
}
} catch (Exception e) {
log.error("============ the request exception {} ============", e.getMessage());
}
} catch (Exception e) {
log.error("============ the request exception {} ============", e.getMessage());
}
return Lists.newArrayList();
}, executor);
results.add(future);
return Lists.newArrayList();
}, executor);
results.add(future);
}
// 线程结束取出结果集
CompletableFuture<Void> allCompletableFuture = CompletableFuture.allOf
(results.toArray(new CompletableFuture[batchNum]));
List<List<String>> result = allCompletableFuture.thenApply(e -> results.stream().map
(CompletableFuture::join).collect(Collectors.toList())).join();
result.forEach(stringList::addAll);
stopWatch.stop();
if (CollUtil.isNotEmpty(stringList)) {
String file = deliveryProperties.getFileUrl().concat(StrPool.SLASH).concat(uuid);
// 进行文件保存
String csvPath = file.concat(StrPool.DOT).concat(FileConstant.CSV_FILE_SUB_NAME);
String zipPath = file.concat(FileConstant.ZIP_FILE_SUB_NAME);
log.info("============= the save path as {} ,num {} ===================", csvPath, stringList.size());
FileZipUtil.writeCSV(csvPath, stringList);
// 设置压缩文件
CompressUtil.decryptionCompression(zipPath, csvPath, null);
// 修改状态并更改
modeRecordRepository.updateStatusNumById(DefaultNumberConstants.ONE_NUMBER, stringList.size(), recordId);
modeRecordRepository.updateStatusAndPathById(DefaultNumberConstants.ONE_NUMBER, zipPath, stringList.size(), childrenId);
FileUtil.del(csvPath);
}
}
// 线程结束取出结果集
CompletableFuture<Void> allCompletableFuture = CompletableFuture.allOf
(results.toArray(new CompletableFuture[batchNum]));
List<List<String>> result = allCompletableFuture.thenApply(e -> results.stream().map
(CompletableFuture::join).collect(Collectors.toList())).join();
result.forEach(stringList::addAll);
stopWatch.stop();
String file = deliveryProperties.getFileUrl().concat(StrPool.SLASH).concat(uuid);
// 进行文件保存
String csvPath = file.concat(StrPool.DOT).concat(FileConstant.CSV_FILE_SUB_NAME);
String zipPath = file.concat(FileConstant.ZIP_FILE_SUB_NAME);
log.info("============= the save path as {} ,num {} ===================", csvPath, stringList.size());
FileZipUtil.writeCSV(csvPath, stringList);
// 设置压缩文件
CompressUtil.decryptionCompression(zipPath, csvPath, null);
// 修改状态并更改
modeRecordRepository.updateStatusAndPathById(DefaultNumberConstants.ONE_NUMBER, zipPath, stringList.size(), childrenId);
modeRecordRepository.updateStatusNumById(DefaultNumberConstants.ONE_NUMBER, stringList.size(), recordId);
FileUtil.del(csvPath);
log.info("================== run task end time {} ==================", DateUtil.now());
}
@Async(value = "WorkExecutor")
@Transactional(rollbackFor = Exception.class)
public void doRunSendTask(List<String> stringList, Long id, String actId, String actName) {
public void doRunSendTask(List<String> stringList, List<Long> ids, String actId, String actName) {
log.info("================== run task begin time {} ==================", DateUtil.now());
int count = DefaultNumberConstants.ZERO_NUMBER;
List<List<String>> partition = Lists.partition(stringList, DefaultNumberConstants.ONE_THOUSAND);
@ -150,21 +156,25 @@ public class DecryptTask {
dto.setActId(actId);
dto.setActName(actName);
for (List<String> list : partition) {
List<CallImportDTO.Source> sendClientList = Lists.newArrayList();
list.forEach(str -> {
CallImportDTO.Source client = new CallImportDTO.Source();
client.setCellphone(str);
sendClientList.add(client);
});
dto.setClientList(sendClientList);
String post = HttpUtil.post(sendClientAddress, JSONUtil.toJsonStr(dto));
if (post.contains(XalanConstants.FEATURE_TRUE)) {
count += list.size();
try {
List<CallImportDTO.Source> sendClientList = Lists.newArrayList();
list.forEach(str -> {
CallImportDTO.Source client = new CallImportDTO.Source();
client.setCellphone(str);
sendClientList.add(client);
});
dto.setClientList(sendClientList);
String post = HttpUtil.post(sendClientAddress, JSONUtil.toJsonStr(dto));
if (post.contains(XalanConstants.FEATURE_TRUE)) {
count += list.size();
}
log.info("============ the submit result as {} =========", JSONUtil.toJsonStr(post));
if (count > DefaultNumberConstants.ZERO_NUMBER) {
modeRecordRepository.updateStatusAndTimeById(DefaultNumberConstants.THREE_NUMBER, DateUtil.date(), count, ids);
}
} catch (Exception exception) {
log.error("============ the request exception {} ============", exception.getMessage());
}
log.info("============ the submit result as {} =========", JSONUtil.toJsonStr(post));
}
if (count > DefaultNumberConstants.ZERO_NUMBER) {
modeRecordRepository.updateStatusAndTimeById(DefaultNumberConstants.THREE_NUMBER, DateUtil.date(), count, id);
}
log.info("================== run task end time {} ==================", DateUtil.now());
}

@ -27,11 +27,11 @@ spring:
username: root
password: y7z7noq2
# 初始连接数
initial-size: 5
initial-size: 10
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
max-active: 300
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间
@ -199,13 +199,15 @@ platform:
zipPassword: DB2022hjk213v1...
exchangePassword: DA2023xlb213v1.
fileUrl: /home/eladmin/mail
modelUrl: /home/eladmin/model
emailAddress: ensoze@outlook.com
genderEmailAddress: ensoze2023@outlook.com
emailPassword: baiye2022
customerId: QISX0xz4l6fR3YL2sUNSpzM2
toEmailAddress: lambda0821@outlook.com
toGenderEmailAddress: lambda0821@outlook.com
dmpDownPath: http:///39.100.77.21:8001/dmp/down/
modelPath: http://39.100.77.21:8013/model/down/
dmpDownPath: http://39.100.77.21:8013/dmp/down/
privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJi+nz0zudS+4Sh+SmTnRfzgJOBIEwlLlJhcRgUbInvFx03zUgdzOUrGsvD2OTPPssnY8dv+Zgz2kUSEDYaWWKUs+VAklVOo0sOxzRMaUfwHRBN3Eq9OkqibDerYf6WUdv1k1BJsXSIdTlz8m6rtVbPF2hz8x/kYyJFzhM2IKTITAgMBAAECgYAgTZAXvWy7lXLAwZSyKkce57hkxllgSd+vKTSVt9tfGcDAt4jNkoy3R7ZoR2ppjq9dCMh9ohuq+ipWtya1I+6zC5sflk9HI/rf+5bq3JRJvxq3EJYe5DlSjQitLUMRP6PQorHnZZj/bdqKgRvrulI8XtK5Fv9Cd4jhkbSZtzgpYQJBAOJu0nu4qJCqIYLCmFWDpRzi9cu8/TFCBLVDH0xhNi28JL6G8xOfdzxsQa8ZlLOxPwn56VbS3+Korq34WCOAG5cCQQCssI4I7dshlA7kXeurVSFvui1YV/7ofFOxRs019+V88tfwNby5TAS9YjX7AuvGkobjpBBNEkE0JExf69m6VBzlAkB5te4HuLNKx1gp7CVr2c43n7tVHynNf1n+gKzjJmGz5ayuiOVBx/aUkPAhiZOHnx9uYlnNZJ4ZPGhgdNwTgPnTAkB61pQSMe/AMOtu8ogjNck1CoAa6W0/vsBhx/VNQGsTuEJ2ciMuw65TcLrpNKi2daBR6XBXAnczOebCDKix7AcpAkEArrU+bx6GwR+UbgoNAl1KwFLrV50pasK7Mlp0BkHM0cz4BGB53O5ng+TJHzen03OgC9I1W1WFAYHj03lb84qM/w==
publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYvp89M7nUvuEofkpk50X84CTgSBMJS5SYXEYFGyJ7xcdN81IHczlKxrLw9jkzz7LJ2PHb/mYM9pFEhA2GllilLPlQJJVTqNLDsc0TGlH8B0QTdxKvTpKomw3q2H+llHb9ZNQSbF0iHU5c/Juq7VWzxdoc/Mf5GMiRc4TNiCkyEwIDAQAB

@ -21,11 +21,11 @@ spring:
username: root
password: yuyou@RDS2020
# 初始连接数
initial-size: 5
initial-size: 10
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
max-active: 300
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间
@ -200,6 +200,7 @@ platform:
zipPassword: DB2022hjk213v1...
exchangePassword: DA2023xlb213v1.
fileUrl: /home/eladmin/mail
modelUrl: /home/eladmin/model
emailAddress: ensoze@outlook.com
genderEmailAddress: ensoze2023@outlook.com
emailPassword: baiye2022
@ -207,6 +208,7 @@ platform:
toGenderEmailAddress: ggggod_2022@outlook.com
customerId: QISX0xz4l6fR3YL2sUNSpzM2
dmpDownPath: https://baiyee.vip/dmp/down/
modelPath: https://baiyee.vip/model/down/
privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJi+nz0zudS+4Sh+SmTnRfzgJOBIEwlLlJhcRgUbInvFx03zUgdzOUrGsvD2OTPPssnY8dv+Zgz2kUSEDYaWWKUs+VAklVOo0sOxzRMaUfwHRBN3Eq9OkqibDerYf6WUdv1k1BJsXSIdTlz8m6rtVbPF2hz8x/kYyJFzhM2IKTITAgMBAAECgYAgTZAXvWy7lXLAwZSyKkce57hkxllgSd+vKTSVt9tfGcDAt4jNkoy3R7ZoR2ppjq9dCMh9ohuq+ipWtya1I+6zC5sflk9HI/rf+5bq3JRJvxq3EJYe5DlSjQitLUMRP6PQorHnZZj/bdqKgRvrulI8XtK5Fv9Cd4jhkbSZtzgpYQJBAOJu0nu4qJCqIYLCmFWDpRzi9cu8/TFCBLVDH0xhNi28JL6G8xOfdzxsQa8ZlLOxPwn56VbS3+Korq34WCOAG5cCQQCssI4I7dshlA7kXeurVSFvui1YV/7ofFOxRs019+V88tfwNby5TAS9YjX7AuvGkobjpBBNEkE0JExf69m6VBzlAkB5te4HuLNKx1gp7CVr2c43n7tVHynNf1n+gKzjJmGz5ayuiOVBx/aUkPAhiZOHnx9uYlnNZJ4ZPGhgdNwTgPnTAkB61pQSMe/AMOtu8ogjNck1CoAa6W0/vsBhx/VNQGsTuEJ2ciMuw65TcLrpNKi2daBR6XBXAnczOebCDKix7AcpAkEArrU+bx6GwR+UbgoNAl1KwFLrV50pasK7Mlp0BkHM0cz4BGB53O5ng+TJHzen03OgC9I1W1WFAYHj03lb84qM/w==
publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYvp89M7nUvuEofkpk50X84CTgSBMJS5SYXEYFGyJ7xcdN81IHczlKxrLw9jkzz7LJ2PHb/mYM9pFEhA2GllilLPlQJJVTqNLDsc0TGlH8B0QTdxKvTpKomw3q2H+llHb9ZNQSbF0iHU5c/Juq7VWzxdoc/Mf5GMiRc4TNiCkyEwIDAQAB

@ -65,7 +65,7 @@ task:
# 核心线程池大小
core-pool-size: 10
# 最大线程数
max-pool-size: 30
max-pool-size: 200
# 活跃时间
keep-alive-seconds: 60
# 队列容量

@ -23,11 +23,11 @@ spring:
# username: root
# password: 12345678
# 初始连接数
initial-size: 5
initial-size: 10
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
max-active: 300
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间

@ -21,11 +21,11 @@ spring:
username: root
password: y7z7noq2
# 初始连接数
initial-size: 5
initial-size: 10
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
max-active: 300
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间

@ -18,11 +18,11 @@ spring:
username: root
password: yuyou@RDS2020
# 初始连接数
initial-size: 5
initial-size: 10
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
max-active: 300
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间

@ -18,11 +18,11 @@ spring:
username: root
password: y7z7noq2
# 初始连接数
initial-size: 5
initial-size: 10
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
max-active: 300
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间

Loading…
Cancel
Save