同步代码
This commit is contained in:
parent
a025eb5098
commit
a38a242e03
|
@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.sun.mail.imap.IMAPStore;
|
import com.sun.mail.imap.IMAPStore;
|
||||||
import com.sun.mail.smtp.SMTPAddressFailedException;
|
import com.sun.mail.smtp.SMTPAddressFailedException;
|
||||||
|
import io.swagger.models.auth.In;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.api.dto.message.MessageDTO;
|
import org.jeecg.common.api.dto.message.MessageDTO;
|
||||||
|
@ -16,6 +17,7 @@ import org.jeecg.common.constant.SymbolConstant;
|
||||||
import org.jeecg.common.email.emuns.MailContentType;
|
import org.jeecg.common.email.emuns.MailContentType;
|
||||||
import org.jeecg.common.exception.DownloadEmailException;
|
import org.jeecg.common.exception.DownloadEmailException;
|
||||||
import org.jeecg.common.properties.SpectrumPathProperties;
|
import org.jeecg.common.properties.SpectrumPathProperties;
|
||||||
|
import org.jeecg.common.properties.TaskProperties;
|
||||||
import org.jeecg.common.util.DateUtils;
|
import org.jeecg.common.util.DateUtils;
|
||||||
import org.jeecg.common.util.Md5Util;
|
import org.jeecg.common.util.Md5Util;
|
||||||
import org.jeecg.common.util.RedisUtil;
|
import org.jeecg.common.util.RedisUtil;
|
||||||
|
@ -47,6 +49,8 @@ public class EmailServiceManager {
|
||||||
|
|
||||||
private SysEmail email;
|
private SysEmail email;
|
||||||
private SpectrumPathProperties spectrumPathProperties;
|
private SpectrumPathProperties spectrumPathProperties;
|
||||||
|
|
||||||
|
private TaskProperties taskProperties;
|
||||||
/**
|
/**
|
||||||
* 系统启动时间
|
* 系统启动时间
|
||||||
*/
|
*/
|
||||||
|
@ -80,13 +84,14 @@ public class EmailServiceManager {
|
||||||
* @param email 邮件属性
|
* @param email 邮件属性
|
||||||
*/
|
*/
|
||||||
public void init(SysEmail email, Integer receiveNum, String temporaryStoragePath,
|
public void init(SysEmail email, Integer receiveNum, String temporaryStoragePath,
|
||||||
Date systemStartupTime, SpectrumPathProperties pathProperties,
|
Date systemStartupTime, SpectrumPathProperties pathProperties,TaskProperties taskProperties,
|
||||||
RedisUtil redisUtil){
|
RedisUtil redisUtil){
|
||||||
this.email = email;
|
this.email = email;
|
||||||
this.receiveNum = receiveNum;
|
this.receiveNum = receiveNum;
|
||||||
this.temporaryStoragePath = temporaryStoragePath;
|
this.temporaryStoragePath = temporaryStoragePath;
|
||||||
this.systemStartupTime = systemStartupTime;
|
this.systemStartupTime = systemStartupTime;
|
||||||
this.spectrumPathProperties = pathProperties;
|
this.spectrumPathProperties = pathProperties;
|
||||||
|
this.taskProperties = taskProperties;
|
||||||
this.redisUtil = redisUtil;
|
this.redisUtil = redisUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,8 +333,9 @@ public class EmailServiceManager {
|
||||||
props.put("mail.smtp.host", email.getEmailServerAddress());
|
props.put("mail.smtp.host", email.getEmailServerAddress());
|
||||||
props.put("mail.smtp.port", email.getPort());
|
props.put("mail.smtp.port", email.getPort());
|
||||||
props.put("mail.smtp.auth", "true");
|
props.put("mail.smtp.auth", "true");
|
||||||
/*props.put("mail.smtp.socketFactory.port", email.getPort());
|
props.put("mail.smtp.starttls.enable", "true");
|
||||||
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");*/
|
props.put("mail.smtp.socketFactory.port", email.getPort());
|
||||||
|
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
|
||||||
|
|
||||||
Session session = Session.getInstance(props);
|
Session session = Session.getInstance(props);
|
||||||
|
|
||||||
|
@ -629,10 +635,10 @@ public class EmailServiceManager {
|
||||||
if(null != store){
|
if(null != store){
|
||||||
store.close();
|
store.close();
|
||||||
}
|
}
|
||||||
for(String messageId : messageIds){
|
// for(String messageId : messageIds){
|
||||||
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
// String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
||||||
redisUtil.del(key);
|
// redisUtil.del(key);
|
||||||
}
|
// }
|
||||||
} catch (MessagingException e) {
|
} catch (MessagingException e) {
|
||||||
log.error("Email closure failed, email address is: {}, reason is: {}",email.getUsername(),e.getMessage());
|
log.error("Email closure failed, email address is: {}, reason is: {}",email.getUsername(),e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -648,10 +654,13 @@ 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;
|
||||||
exist = redisUtil.hasKey(key);
|
int numberKey = redisUtil.get(key) != null? (int) redisUtil.get(key):0;
|
||||||
if(exist){
|
// exist = redisUtil.hasKey(key);
|
||||||
|
if(numberKey > taskProperties.getForceDeletedNumber()){
|
||||||
|
exist = true;
|
||||||
log.info("Check: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"));
|
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);
|
||||||
|
redisUtil.del(key);
|
||||||
}
|
}
|
||||||
return exist;
|
return exist;
|
||||||
} catch (MessagingException e) {
|
} catch (MessagingException e) {
|
||||||
|
|
|
@ -41,6 +41,11 @@ public class TaskProperties implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer mailThreadExecCycle;
|
private Integer mailThreadExecCycle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 线程获取失败邮件次数
|
||||||
|
*/
|
||||||
|
private Integer forceDeletedNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监测需删除的邮件线程执行周期(毫秒)
|
* 监测需删除的邮件线程执行周期(毫秒)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -74,23 +74,23 @@ public class EmailParsingActuator extends Thread{
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
||||||
emailServiceManager.init(this.emailProperties,this.taskProperties.getReceiveNum(),this.taskProperties.getTemporaryStoragePath(),
|
emailServiceManager.init(this.emailProperties,this.taskProperties.getReceiveNum(),this.taskProperties.getTemporaryStoragePath(),
|
||||||
this.systemStartupTime, spectrumServiceQuotes.getSpectrumPathProperties(),spectrumServiceQuotes.getRedisUtil());
|
this.systemStartupTime, spectrumServiceQuotes.getSpectrumPathProperties(), spectrumServiceQuotes.getTaskProperties(), spectrumServiceQuotes.getRedisUtil());
|
||||||
List<String> messageIds = new ArrayList<>();
|
List<String> messageIds = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
Message[] messages = emailServiceManager.receiveMail();
|
Message[] messages = emailServiceManager.receiveMail();
|
||||||
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){
|
||||||
//本批次邮件号
|
//本批次邮件号
|
||||||
|
@ -107,6 +107,8 @@ public class EmailParsingActuator extends Thread{
|
||||||
}
|
}
|
||||||
}catch (InterruptedException e) {
|
}catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
} catch (MessagingException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
} finally {
|
} finally {
|
||||||
//清除本批次邮件日志缓存
|
//清除本批次邮件日志缓存
|
||||||
EmailLogManager.getInstance().clear();
|
EmailLogManager.getInstance().clear();
|
||||||
|
|
|
@ -96,7 +96,10 @@ public class SpectrumParsingActuator implements Runnable{
|
||||||
receiveDate = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss");
|
receiveDate = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss");
|
||||||
String emlName = subject+ StringConstant.UNDER_LINE+ receiveDate;
|
String emlName = subject+ StringConstant.UNDER_LINE+ receiveDate;
|
||||||
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
||||||
spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime);
|
// spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime);
|
||||||
|
//判断当前key的下载次数是否超过限制次数
|
||||||
|
spectrumServiceQuotes.getRedisUtil().incr(key, 1L);
|
||||||
|
spectrumServiceQuotes.getRedisUtil().expire(key, expiryTime);
|
||||||
//线程开始初始化时,初始本线程负责的能谱日志事件
|
//线程开始初始化时,初始本线程负责的能谱日志事件
|
||||||
SpectrumLogManager.mailSpectrumLogManager.offer(Thread.currentThread().getId(),null);
|
SpectrumLogManager.mailSpectrumLogManager.offer(Thread.currentThread().getId(),null);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user