提交 0947d5be 作者: duanxincheng

邮件推送压测

父级 c7303434
......@@ -60,7 +60,7 @@ public class EmailPushTask {
while (retryCount.intValue() <= MAX_RETRY && !isSuccess) {
String hostUid = meetingInfo.getHostUid();
//压测注释
//todo 压测注释
// if(!tidWidRelations.containsKey(hostUid)){
// log.error("邮件推送重试失败: 主持人对应关系未配置。meetingId {}", meetingId);
// continue;
......
package com.cmeeting.stressTest.controller;
import com.cmeeting.stressTest.service.StressTestService;
import com.cmeeting.util.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -16,7 +17,20 @@ public class StressTestController {
private StressTestService service;
@GetMapping("/minutesGenerate")
public void minutesGenerate(@RequestParam(value = "stressPage") Integer stressPage){
public R minutesGenerate(@RequestParam(value = "stressPage") Integer stressPage){
service.minutesGenerate(stressPage);
return R.ok();
}
@GetMapping("/minutesGenerateRetry")
public R minutesGenerateRetry(){
service.minutesGenerateRetry();
return R.ok();
}
@GetMapping("/emailPushRetry")
public R emailPushRetry(){
service.emailPushRetry();
return R.ok();
}
}
......@@ -6,4 +6,7 @@ public interface StressTestService {
void minutesGenerate(Integer stressPage);
void minutesGenerateRetry();
void emailPushRetry();
}
package com.cmeeting.stressTest.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cmeeting.dto.UserDTO;
import com.cmeeting.mapper.primary.MeetingInfoMapper;
import com.cmeeting.mapper.primary.TecentMeetingMapper;
import com.cmeeting.mapper.primary.UserIdMapper;
......@@ -7,6 +9,7 @@ import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.pojo.TencentMeetingUser;
import com.cmeeting.pojo.UserId;
import com.cmeeting.service.FileProcessProducer;
import com.cmeeting.service.MeetingInfoService;
import com.cmeeting.util.SignatureUtil;
import com.cmeeting.vo.CorpRecordsVO;
import com.cmeeting.vo.TencentMeetingVO;
......@@ -32,10 +35,7 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
......@@ -67,6 +67,8 @@ public class StressTestServiceImpl implements StressTestService {
private MeetingInfoMapper meetingInfoMapper;
@Resource
private TecentMeetingMapper tecentMeetingMapper;
@Autowired
private MeetingInfoService meetingInfoService;
@Override
public void minutesGenerate(Integer stressPage) {
......@@ -84,6 +86,82 @@ public class StressTestServiceImpl implements StressTestService {
producer.submitBatchTasks(meetingFiles,new ArrayList<>(),tidWidRelations,Boolean.FALSE);
}
@Override
public void minutesGenerateRetry() {
try {
log.info("-------生成纪要重试服务开始-------");
log.info("生成纪要重试服务压测开始时间: {}",LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//查出所有早于一小时前的,生成失败且未重试过的会议
List<MeetingInfo> meetingInfoList =
meetingInfoService.list(new LambdaQueryWrapper<MeetingInfo>()
.eq(MeetingInfo::getIsGenerated,Boolean.FALSE)
.eq(MeetingInfo::getGenerateRetry,Boolean.FALSE)
.le(MeetingInfo::getSyncTime,LocalDateTime.now().minusHours(1))
);
if (meetingInfoList == null || meetingInfoList.isEmpty()) {
log.info("没有生成失败的会议需要重试");
return;
}
List<TencentMeetingVO.RecordFile> meetingFiles = new ArrayList<>();
for (MeetingInfo meetingInfo : meetingInfoList) {
TencentMeetingVO.RecordFile recordFile = TencentMeetingVO.RecordFile.builder()
.meetingId(meetingInfo.getMeetingId())
.subMeetingId(meetingInfo.getSubMeetingId())
.recordFileIdList(Arrays.asList(meetingInfo.getRecordFileId().split(","))).build();
meetingFiles.add(recordFile);
}
//查出企微id和腾会id的关联关系
List<UserId> userIdRelations = userIdMapper.selectList(null);
Map<String,String> tidWidRelations = userIdRelations.stream().collect(Collectors.toMap(UserId::getTid,UserId::getWid));
// 提交处理任务
producer.submitBatchTasks(meetingFiles,new ArrayList<>(),tidWidRelations, Boolean.TRUE);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void emailPushRetry() {
try {
log.info("-------邮件推送重试压测开始-------");
log.info("当前时间: " + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE));
//查出所有早于一小时前的,邮件推送失败且未重试过的会议
List<MeetingInfo> meetingInfoList =
meetingInfoService.list(new LambdaQueryWrapper<MeetingInfo>()
.eq(MeetingInfo::getIsGenerated,Boolean.TRUE)
.eq(MeetingInfo::getEmailPushAccess,Boolean.TRUE)
.eq(MeetingInfo::getIsPushed,Boolean.FALSE)
.eq(MeetingInfo::getPushRetry,Boolean.FALSE)
.le(MeetingInfo::getSyncTime,LocalDateTime.now().minusHours(1))
);
if (meetingInfoList == null || meetingInfoList.isEmpty()) {
log.info("没有推送失败的邮件需要重试");
return;
}
List<TencentMeetingVO.RecordFile> meetingFiles = new ArrayList<>();
for (MeetingInfo meetingInfo : meetingInfoList) {
TencentMeetingVO.RecordFile recordFile = TencentMeetingVO.RecordFile.builder()
.meetingId(meetingInfo.getMeetingId())
.subMeetingId(meetingInfo.getSubMeetingId()).build();
meetingFiles.add(recordFile);
}
//查出企微id和腾会id的关联关系
List<UserId> userIdRelations = userIdMapper.selectList(null);
Map<String,String> tidWidRelations = userIdRelations.stream().collect(Collectors.toMap(UserId::getTid,UserId::getWid));
// 提交处理任务
producer.submitEmailPushTasks(meetingFiles,tidWidRelations);
} catch (Exception e) {
e.printStackTrace();
}
}
public List<TencentMeetingVO.RecordFile> getMeetingFiles(Integer stressPage) {
Client client = new Client.Builder()
.withAppId(tencentAppId).withSdkId(tencentSdkId)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论