自动处理模块会删除邮件问题
This commit is contained in:
parent
93d78ee368
commit
abe1d6dfb3
|
@ -543,13 +543,13 @@ public class EmailServiceManager {
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(new Date(),"YYMMdd"));
|
fileName.append(DateUtils.formatDate(new Date(),"YYMMdd"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(new Date(),"HHMMSSSSS"));
|
fileName.append(DateUtils.formatDate(new Date(),"HHmmssSSS"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append("receive");
|
fileName.append("receive");
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(receivedDate,"YYMMdd"));
|
fileName.append(DateUtils.formatDate(receivedDate,"YYMMdd"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(receivedDate,"HHMMSSSSS"));
|
fileName.append(DateUtils.formatDate(receivedDate,"HHmmssSSS"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(emailCounter);
|
fileName.append(emailCounter);
|
||||||
fileName.append(SAVE_EML_SUFFIX);
|
fileName.append(SAVE_EML_SUFFIX);
|
||||||
|
@ -580,6 +580,8 @@ public class EmailServiceManager {
|
||||||
String errorMsg = StrUtil.format("The email download failed, the subject of the email is {}, the reason is {}.", subject, e.getMessage());
|
String errorMsg = StrUtil.format("The email download failed, the subject of the email is {}, the reason is {}.", subject, e.getMessage());
|
||||||
log.error(errorMsg);
|
log.error(errorMsg);
|
||||||
throw new DownloadEmailException(errorMsg);
|
throw new DownloadEmailException(errorMsg);
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error("",e);
|
||||||
}finally {
|
}finally {
|
||||||
EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDEML,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"),
|
EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDEML,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"),
|
||||||
(Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath()));
|
(Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath()));
|
||||||
|
@ -599,8 +601,8 @@ public class EmailServiceManager {
|
||||||
Date receivedDate = null;
|
Date receivedDate = null;
|
||||||
try {
|
try {
|
||||||
subject = MimeUtility.decodeText(message.getSubject());
|
subject = MimeUtility.decodeText(message.getSubject());
|
||||||
receivedDate = message.getReceivedDate();
|
|
||||||
message.setFlag(Flags.Flag.DELETED,true);
|
message.setFlag(Flags.Flag.DELETED,true);
|
||||||
|
log.info("EmailServiceManager: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"));
|
||||||
} catch (MessagingException | UnsupportedEncodingException e) {
|
} catch (MessagingException | UnsupportedEncodingException e) {
|
||||||
status = EmailLogManager.STATUS_ERROR;
|
status = EmailLogManager.STATUS_ERROR;
|
||||||
log.error("Email deletion failed, the subject of the email is :{}, the reason is :{}.",subject,e.getMessage());
|
log.error("Email deletion failed, the subject of the email is :{}, the reason is :{}.",subject,e.getMessage());
|
||||||
|
@ -645,9 +647,9 @@ public class EmailServiceManager {
|
||||||
boolean exist = false;
|
boolean exist = false;
|
||||||
try {
|
try {
|
||||||
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
||||||
log.info("Check: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"));
|
|
||||||
exist = redisUtil.hasKey(key);
|
exist = redisUtil.hasKey(key);
|
||||||
if(exist){
|
if(exist){
|
||||||
|
log.info("Check: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"));
|
||||||
message.setFlag(Flags.Flag.DELETED,true);
|
message.setFlag(Flags.Flag.DELETED,true);
|
||||||
}
|
}
|
||||||
return exist;
|
return exist;
|
||||||
|
|
|
@ -85,6 +85,20 @@ public class AutoProcessManager{
|
||||||
if(emailExecThreadMap.containsKey(next.getId())){
|
if(emailExecThreadMap.containsKey(next.getId())){
|
||||||
EmailParsingActuator actuator = emailExecThreadMap.get(next.getId());
|
EmailParsingActuator actuator = emailExecThreadMap.get(next.getId());
|
||||||
actuator.setStop(true);
|
actuator.setStop(true);
|
||||||
|
// 二十秒内 如果现在没有停止将强制停止
|
||||||
|
for(int i=1;i<=20;i++){
|
||||||
|
try {
|
||||||
|
TimeUnit.SECONDS.sleep(1);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
if(i==20 && actuator.isAlive()){
|
||||||
|
actuator.stop();
|
||||||
|
}
|
||||||
|
if(!actuator.isAlive()){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
emailExecThreadMap.remove(next.getId());
|
emailExecThreadMap.remove(next.getId());
|
||||||
}
|
}
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
|
@ -95,6 +109,11 @@ public class AutoProcessManager{
|
||||||
next.setResetFlag(false);
|
next.setResetFlag(false);
|
||||||
}
|
}
|
||||||
if(next.isNewEmailFlag()){
|
if(next.isNewEmailFlag()){
|
||||||
|
// 网络正常之后才允许创建新的实例
|
||||||
|
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
||||||
|
emailServiceManager.init(next);
|
||||||
|
boolean testFlag = emailServiceManager.testConnectEmailServer();
|
||||||
|
if(testFlag){
|
||||||
EmailParsingActuator emailParsingActuator = new EmailParsingActuator();
|
EmailParsingActuator emailParsingActuator = new EmailParsingActuator();
|
||||||
emailParsingActuator.init(next,spectrumServiceQuotes,emailCounter,systemStartupTime);
|
emailParsingActuator.init(next,spectrumServiceQuotes,emailCounter,systemStartupTime);
|
||||||
emailParsingActuator.setName(next.getUsername()+"-email-monitor");
|
emailParsingActuator.setName(next.getUsername()+"-email-monitor");
|
||||||
|
@ -106,6 +125,7 @@ public class AutoProcessManager{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
long end = System.currentTimeMillis();
|
long end = System.currentTimeMillis();
|
||||||
long sleepTime = taskProperties.getMonitoringMailDataCycle() - (end-start);
|
long sleepTime = taskProperties.getMonitoringMailDataCycle() - (end-start);
|
||||||
//如果sleepTime > 0 需要睡眠到指定时间,否则继续下次获取邮件
|
//如果sleepTime > 0 需要睡眠到指定时间,否则继续下次获取邮件
|
||||||
|
|
|
@ -75,16 +75,16 @@ public class EmailParsingActuator extends Thread{
|
||||||
if(ArrayUtils.isNotEmpty(messages)){
|
if(ArrayUtils.isNotEmpty(messages)){
|
||||||
log.info("EmailParsingActuator本次获取邮件数量为:{}",messages.length);
|
log.info("EmailParsingActuator本次获取邮件数量为:{}",messages.length);
|
||||||
//检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除
|
//检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除
|
||||||
for(int i=messages.length-1;i>=0;i--){
|
// for(int i=messages.length-1;i>=0;i--){
|
||||||
if (!messages[i].isExpunged()){
|
// if (!messages[i].isExpunged()){
|
||||||
String messageId = ((MimeMessage) messages[i]).getMessageID();
|
// String messageId = ((MimeMessage) messages[i]).getMessageID();
|
||||||
final boolean exist = emailServiceManager.check(messages[i],messageId);
|
// final boolean exist = emailServiceManager.check(messages[i],messageId);
|
||||||
messageIds.add(messageId);
|
// messageIds.add(messageId);
|
||||||
if(exist){
|
// if(exist){
|
||||||
messages = ArrayUtils.remove(messages,i);
|
// messages = ArrayUtils.remove(messages,i);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
log.info("EmailParsingActuator本次真实执行邮件数量为:{}",messages.length);
|
log.info("EmailParsingActuator本次真实执行邮件数量为:{}",messages.length);
|
||||||
if(messages.length > 0){
|
if(messages.length > 0){
|
||||||
//本批次邮件号
|
//本批次邮件号
|
||||||
|
@ -99,7 +99,7 @@ public class EmailParsingActuator extends Thread{
|
||||||
taskLatch.await();
|
taskLatch.await();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (InterruptedException | MessagingException e) {
|
}catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
//清除本批次邮件日志缓存
|
//清除本批次邮件日志缓存
|
||||||
|
|
|
@ -126,6 +126,7 @@ public class SpectrumParsingActuator implements Runnable{
|
||||||
final String emlErrorPath = spectrumServiceQuotes.getSpectrumPathProperties().getEmlErrorPath();
|
final String emlErrorPath = spectrumServiceQuotes.getSpectrumPathProperties().getEmlErrorPath();
|
||||||
final String finalPath = rootPath+emlErrorPath;
|
final String finalPath = rootPath+emlErrorPath;
|
||||||
FileOperation.moveFile(emlFile,finalPath,true);
|
FileOperation.moveFile(emlFile,finalPath,true);
|
||||||
|
spectrumServiceQuotes.getRedisUtil().del(key);
|
||||||
throw new DownloadEmailException("邮件移走后手动抛出DownloadEmailException");
|
throw new DownloadEmailException("邮件移走后手动抛出DownloadEmailException");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user