fix:1.新加邮件日志批次和线程id内容

This commit is contained in:
panbaolin 2024-02-20 19:28:21 +08:00
parent eccb0480d1
commit e9c186c9d7
14 changed files with 124 additions and 34 deletions

View File

@ -48,6 +48,10 @@ public class EmailLogEvent {
*/ */
private Date logTime; private Date logTime;
private Long threadId;
private Integer batchesCounter;
public EmailLogEvent(){ public EmailLogEvent(){
} }
@ -60,7 +64,9 @@ public class EmailLogEvent {
this.logTime = new Date(); this.logTime = new Date();
} }
public EmailLogEvent(String gsType,String logProcess) { public EmailLogEvent(Integer batchesCounter,Long threadId,String gsType,String logProcess) {
this.batchesCounter = batchesCounter;
this.threadId = threadId;
this.gsType = gsType; this.gsType = gsType;
this.logProcess = logProcess; this.logProcess = logProcess;
this.logTime = new Date(); this.logTime = new Date();
@ -73,7 +79,18 @@ public class EmailLogEvent {
this.logTime = new Date(); this.logTime = new Date();
} }
public EmailLogEvent(String gsType,String state, String logProcess,String phdMailLoadPath) { public EmailLogEvent(Integer batchesCounter,Long threadId,String gsType,String state, String logProcess) {
this.batchesCounter = batchesCounter;
this.threadId = threadId;
this.gsType = gsType;
this.state = state;
this.logProcess = logProcess;
this.logTime = new Date();
}
public EmailLogEvent(Integer batchesCounter,Long threadId,String gsType,String state, String logProcess,String phdMailLoadPath) {
this.batchesCounter = batchesCounter;
this.threadId = threadId;
this.gsType = gsType; this.gsType = gsType;
this.state = state; this.state = state;
this.logProcess = logProcess; this.logProcess = logProcess;
@ -81,7 +98,9 @@ public class EmailLogEvent {
this.logTime = new Date(); this.logTime = new Date();
} }
public EmailLogEvent(String gsType,String state, String logProcess,String subject,String recieveTime,String emlPath) { public EmailLogEvent(Integer batchesCounter,Long threadId,String gsType,String state, String logProcess,String subject,String recieveTime,String emlPath) {
this.batchesCounter = batchesCounter;
this.threadId = threadId;
this.gsType = gsType; this.gsType = gsType;
this.state = state; this.state = state;
this.logProcess = logProcess; this.logProcess = logProcess;
@ -91,7 +110,9 @@ public class EmailLogEvent {
this.logTime = new Date(); this.logTime = new Date();
} }
public EmailLogEvent(String gsType,String state, String logProcess,String subject,String recieveTime) { public EmailLogEvent(Integer batchesCounter,Long threadId,String gsType,String state, String logProcess,String subject,String recieveTime) {
this.batchesCounter = batchesCounter;
this.threadId = threadId;
this.gsType = gsType; this.gsType = gsType;
this.state = state; this.state = state;
this.logProcess = logProcess; this.logProcess = logProcess;

View File

@ -201,6 +201,11 @@ public class EmailLogManager {
*/ */
private String getIdHeaderLog(EmailLogEvent event){ private String getIdHeaderLog(EmailLogEvent event){
StringBuilder logContent = new StringBuilder(); StringBuilder logContent = new StringBuilder();
logContent.append("Batches: ");
logContent.append(event.getBatchesCounter());
logContent.append(" ThreadId: ");
logContent.append(event.getThreadId());
logContent.append(StringConstant.SPACE);
logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss")); logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss"));
logContent.append(" Get FileNameHeader "); logContent.append(" Get FileNameHeader ");
logContent.append(event.getState()); logContent.append(event.getState());
@ -217,6 +222,11 @@ public class EmailLogManager {
*/ */
private String getIdBodyLog(EmailLogEvent event){ private String getIdBodyLog(EmailLogEvent event){
StringBuilder logContent = new StringBuilder(); StringBuilder logContent = new StringBuilder();
logContent.append("Batches: ");
logContent.append(event.getBatchesCounter());
logContent.append(" ThreadId: ");
logContent.append(event.getThreadId());
logContent.append(StringConstant.SPACE);
logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss")); logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss"));
logContent.append(" Get File "); logContent.append(" Get File ");
logContent.append(event.getPhdMailLoadPath()); logContent.append(event.getPhdMailLoadPath());
@ -234,6 +244,11 @@ public class EmailLogManager {
*/ */
private String getIdEmlLog(EmailLogEvent event){ private String getIdEmlLog(EmailLogEvent event){
StringBuilder logContent = new StringBuilder(); StringBuilder logContent = new StringBuilder();
logContent.append("Batches: ");
logContent.append(event.getBatchesCounter());
logContent.append(" ThreadId: ");
logContent.append(event.getThreadId());
logContent.append(StringConstant.SPACE);
logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss")); logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss"));
logContent.append(" Get File subject:"); logContent.append(" Get File subject:");
logContent.append(event.getSubject()); logContent.append(event.getSubject());
@ -255,6 +270,11 @@ public class EmailLogManager {
*/ */
private String getDeleteLog(EmailLogEvent event){ private String getDeleteLog(EmailLogEvent event){
StringBuilder logContent = new StringBuilder(); StringBuilder logContent = new StringBuilder();
logContent.append("Batches: ");
logContent.append(event.getBatchesCounter());
logContent.append(" ThreadId: ");
logContent.append(event.getThreadId());
logContent.append(StringConstant.SPACE);
logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss")); logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss"));
logContent.append(" Delete File subject:"); logContent.append(" Delete File subject:");
logContent.append(event.getSubject()); logContent.append(event.getSubject());
@ -274,6 +294,11 @@ public class EmailLogManager {
*/ */
private String getExpungeLog(EmailLogEvent event){ private String getExpungeLog(EmailLogEvent event){
StringBuilder logContent = new StringBuilder(); StringBuilder logContent = new StringBuilder();
logContent.append("Batches: ");
logContent.append(event.getBatchesCounter());
logContent.append(" ThreadId: ");
logContent.append(event.getThreadId());
logContent.append(StringConstant.SPACE);
logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss")); logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss"));
logContent.append(" Expunge File subject:"); logContent.append(" Expunge File subject:");
logContent.append(event.getSubject()); logContent.append(event.getSubject());
@ -293,6 +318,11 @@ public class EmailLogManager {
*/ */
private String getDoneLog(EmailLogEvent event){ private String getDoneLog(EmailLogEvent event){
StringBuilder logContent = new StringBuilder(); StringBuilder logContent = new StringBuilder();
logContent.append("Batches: ");
logContent.append(event.getBatchesCounter());
logContent.append(" ThreadId: ");
logContent.append(event.getThreadId());
logContent.append(StringConstant.SPACE);
logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss")); logContent.append(DateUtils.formatDate(event.getLogTime(),"yyyy-MM-dd HH:mm:ss"));
logContent.append(" Done"); logContent.append(" Done");
logContent.append(LOG_SUFFIX); logContent.append(LOG_SUFFIX);

View File

@ -436,7 +436,7 @@ public class EmailServiceManager {
* @param message * @param message
* @return * @return
*/ */
public String getMailSubject(@NotNull Message message) throws MessagingException { public String getMailSubject(@NotNull Message message,Integer batchesCounter) throws MessagingException {
String subject = ""; String subject = "";
String status = EmailLogManager.STATUS_SUCCESS; String status = EmailLogManager.STATUS_SUCCESS;
try { try {
@ -447,7 +447,7 @@ public class EmailServiceManager {
status = EmailLogManager.STATUS_ERROR; status = EmailLogManager.STATUS_ERROR;
throw e; throw e;
}finally { }finally {
EmailLogEvent event = new EmailLogEvent(EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDHEADER); EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDHEADER);
EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event);
} }
return subject; return subject;
@ -518,7 +518,7 @@ public class EmailServiceManager {
* 新格式为发件人_主题_年月日_时分秒毫秒_receive_年月日_时分秒毫秒_计数0-10000 * 新格式为发件人_主题_年月日_时分秒毫秒_receive_年月日_时分秒毫秒_计数0-10000
* 当计数大于10000后从0开始服务重启后也从0开始 * 当计数大于10000后从0开始服务重启后也从0开始
*/ */
public File downloadEmailToEmlDir(@NotNull Message message,Integer emailCounter) throws MessagingException { public File downloadEmailToEmlDir(@NotNull Message message,Integer emailCounter,Integer batchesCounter) throws MessagingException {
String subject = ""; String subject = "";
File emlFile = null; File emlFile = null;
String status = EmailLogManager.STATUS_SUCCESS; String status = EmailLogManager.STATUS_SUCCESS;
@ -564,7 +564,7 @@ public class EmailServiceManager {
log.error(errorMsg); log.error(errorMsg);
throw new DownloadEmailException(errorMsg); throw new DownloadEmailException(errorMsg);
}finally { }finally {
EmailLogEvent event = new EmailLogEvent(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()));
EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event);
} }
@ -576,7 +576,7 @@ public class EmailServiceManager {
* @param message * @param message
* @throws MessagingException * @throws MessagingException
*/ */
public void removeMail(@NotNull Message message){ public void removeMail(@NotNull Message message,Integer batchesCounter){
String status = EmailLogManager.STATUS_SUCCESS; String status = EmailLogManager.STATUS_SUCCESS;
String subject = ""; String subject = "";
Date receivedDate = null; Date receivedDate = null;
@ -589,10 +589,10 @@ public class EmailServiceManager {
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());
e.printStackTrace(); e.printStackTrace();
}finally { }finally {
EmailLogEvent removeEvent = new EmailLogEvent(EmailLogManager.GS_TYPE_GET,status,EmailLogManager.DELETEID,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS")); EmailLogEvent removeEvent = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.DELETEID,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"));
EmailLogManager.getInstance().offer(Thread.currentThread().getId(),removeEvent); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),removeEvent);
//这里删除和彻底删除一起写入日志java和C++处理有差异java是在连接关闭时彻底删除的 //这里删除和彻底删除一起写入日志java和C++处理有差异java是在连接关闭时彻底删除的
EmailLogEvent expungeEvent = new EmailLogEvent(EmailLogManager.GS_TYPE_GET,status,EmailLogManager.EXPUNGE,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS")); EmailLogEvent expungeEvent = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.EXPUNGE,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"));
EmailLogManager.getInstance().offer(Thread.currentThread().getId(),expungeEvent); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),expungeEvent);
} }
} }

View File

@ -86,14 +86,18 @@ public class EmailParsingActuator extends Thread{
} }
} }
log.info("EmailParsingActuator本次真实执行邮件数量为{}",messages.length); log.info("EmailParsingActuator本次真实执行邮件数量为{}",messages.length);
CountDownLatch taskLatch = new CountDownLatch(messages.length); if(messages.length > 0){
for(Message message : messages){ //本批次邮件号
SpectrumParsingActuator spectrumParsingActuator = new SpectrumParsingActuator(); final Integer batchesCounter = spectrumServiceQuotes.getBatchesCounter().getCurrValue();
spectrumParsingActuator.init(message,emailProperties,emailServiceManager, CountDownLatch taskLatch = new CountDownLatch(messages.length);
taskLatch,spectrumServiceQuotes,emailCounter); for(Message message : messages){
poolExecutor.execute(spectrumParsingActuator); SpectrumParsingActuator spectrumParsingActuator = new SpectrumParsingActuator();
spectrumParsingActuator.init(message,emailProperties,emailServiceManager,
taskLatch,spectrumServiceQuotes,emailCounter,batchesCounter);
poolExecutor.execute(spectrumParsingActuator);
}
taskLatch.await();
} }
taskLatch.await();
} }
}catch (InterruptedException | MessagingException e) { }catch (InterruptedException | MessagingException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.spectrum;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
@ -80,15 +81,19 @@ public abstract class AbstractSpectrumHandler extends AbstractChain {
*/ */
protected List<String> spectrumFileLabels = Lists.newArrayList(); protected List<String> spectrumFileLabels = Lists.newArrayList();
protected Integer batchesCounter;
/** /**
* 初始化参数 * 初始化参数
*/ */
public void init(String mailContent,String emlFileName,SpectrumServiceQuotes spectrumServiceQuotes,StringBuilder returnFileName,Integer spectrumSource) throws Exception{ public void init(String mailContent, String emlFileName, SpectrumServiceQuotes spectrumServiceQuotes,
StringBuilder returnFileName, Integer spectrumSource, Integer batchesCounter) throws Exception{
this.mailContent = mailContent; this.mailContent = mailContent;
this.spectrumServiceQuotes = spectrumServiceQuotes; this.spectrumServiceQuotes = spectrumServiceQuotes;
this.returnFileName = returnFileName; this.returnFileName = returnFileName;
this.spectrumSource = spectrumSource; this.spectrumSource = spectrumSource;
this.emlFileName = emlFileName; this.emlFileName = emlFileName;
this.batchesCounter = batchesCounter;
} }
/** /**
@ -109,7 +114,9 @@ public abstract class AbstractSpectrumHandler extends AbstractChain {
*/ */
protected void initNext(SpectrumServiceQuotes spectrumServiceQuotes,File spectrumFile, protected void initNext(SpectrumServiceQuotes spectrumServiceQuotes,File spectrumFile,
String sourceFilePath,DataType currDataType, String sourceFilePath,DataType currDataType,
String mailContent,String emlFileName,Integer spectrumSource,StringBuilder returnFileName){ String mailContent,String emlFileName,
Integer spectrumSource,StringBuilder returnFileName,
Integer batchesCounter){
this.spectrumServiceQuotes = spectrumServiceQuotes; this.spectrumServiceQuotes = spectrumServiceQuotes;
this.spectrumFile = spectrumFile; this.spectrumFile = spectrumFile;
this.sourceFilePath = sourceFilePath; this.sourceFilePath = sourceFilePath;
@ -118,6 +125,7 @@ public abstract class AbstractSpectrumHandler extends AbstractChain {
this.emlFileName = emlFileName; this.emlFileName = emlFileName;
this.spectrumSource = spectrumSource; this.spectrumSource = spectrumSource;
this.returnFileName = returnFileName; this.returnFileName = returnFileName;
this.batchesCounter = batchesCounter;
this.setChina(); this.setChina();
} }
@ -242,7 +250,7 @@ public abstract class AbstractSpectrumHandler extends AbstractChain {
e.printStackTrace(); e.printStackTrace();
}finally { }finally {
if(SpectrumSource.FORM_EMAIL_SERVICE.getSourceType().equals(spectrumSource)){ if(SpectrumSource.FORM_EMAIL_SERVICE.getSourceType().equals(spectrumSource)){
EmailLogEvent event = new EmailLogEvent(EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDBODY, EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDBODY,
Objects.isNull(this.spectrumFile)?" ":this.spectrumFile.getAbsolutePath()); Objects.isNull(this.spectrumFile)?" ":this.spectrumFile.getAbsolutePath());
EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event);
} }

View File

@ -54,7 +54,7 @@ public class AlertSpectrum extends AbstractSpectrumHandler{
AbstractSpectrumHandler spectrumHandler = new HealthStatusSpectrum(); AbstractSpectrumHandler spectrumHandler = new HealthStatusSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath,
super.currDataType,super.mailContent,super.emlFileName, super.currDataType,super.mailContent,super.emlFileName,
super.spectrumSource,super.returnFileName); super.spectrumSource,super.returnFileName,super.batchesCounter);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }

View File

@ -0,0 +1,22 @@
package org.jeecg.modules.spectrum;
import org.springframework.stereotype.Component;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 批次计数器
*/
@Component
public class BatchesCounter {
private Object lock = new Object();
private AtomicInteger batchesCounter = new AtomicInteger();
public int getCurrValue(){
synchronized (lock){
return batchesCounter.getAndIncrement();
}
}
}

View File

@ -17,7 +17,7 @@ public class DetbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
AbstractSpectrumHandler spectrumHandler = new QcphdSpectrum(); AbstractSpectrumHandler spectrumHandler = new QcphdSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath,
super.currDataType,super.mailContent,super.emlFileName, super.currDataType,super.mailContent,super.emlFileName,
super.spectrumSource,super.returnFileName); super.spectrumSource,super.returnFileName,super.batchesCounter);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }

View File

@ -19,7 +19,7 @@ public class GasbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
AbstractSpectrumHandler spectrumHandler = new MetSpectrum(); AbstractSpectrumHandler spectrumHandler = new MetSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath,
super.currDataType,super.mailContent,super.emlFileName, super.currDataType,super.mailContent,super.emlFileName,
super.spectrumSource,super.returnFileName); super.spectrumSource,super.returnFileName,super.batchesCounter);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }

View File

@ -46,7 +46,7 @@ public class MetSpectrum extends AbstractSpectrumHandler{
AbstractSpectrumHandler spectrumHandler = new AlertSpectrum(); AbstractSpectrumHandler spectrumHandler = new AlertSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath,
super.currDataType,super.mailContent,super.emlFileName, super.currDataType,super.mailContent,super.emlFileName,
super.spectrumSource,super.returnFileName); super.spectrumSource,super.returnFileName,super.batchesCounter);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }

View File

@ -17,7 +17,7 @@ public class QcphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
AbstractSpectrumHandler spectrumHandler = new GasbkphdSpectrum(); AbstractSpectrumHandler spectrumHandler = new GasbkphdSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath,
super.currDataType,super.mailContent,super.emlFileName, super.currDataType,super.mailContent,super.emlFileName,
super.spectrumSource,super.returnFileName); super.spectrumSource,super.returnFileName,super.batchesCounter);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }

View File

@ -28,7 +28,7 @@ public class SamplephdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
AbstractSpectrumHandler spectrumHandler = new DetbkphdSpectrum(); AbstractSpectrumHandler spectrumHandler = new DetbkphdSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,super.sourceFilePath,
super.currDataType,super.mailContent,super.emlFileName, super.currDataType,super.mailContent,super.emlFileName,
super.spectrumSource,super.returnFileName); super.spectrumSource,super.returnFileName,super.batchesCounter);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }

View File

@ -58,6 +58,8 @@ public class SpectrumParsingActuator implements Runnable{
* 邮件计数器 * 邮件计数器
*/ */
private EmailCounter emailCounter; private EmailCounter emailCounter;
private Integer batchesCounter;
/** /**
* 一天秒数 * 一天秒数
*/ */
@ -65,13 +67,14 @@ public class SpectrumParsingActuator implements Runnable{
public void init(Message message, EmailProperties emailProperties,EmailServiceManager emailServiceManager, public void init(Message message, EmailProperties emailProperties,EmailServiceManager emailServiceManager,
CountDownLatch taskLatch, SpectrumServiceQuotes spectrumServiceQuotes, CountDownLatch taskLatch, SpectrumServiceQuotes spectrumServiceQuotes,
EmailCounter emailCounter){ EmailCounter emailCounter,Integer batchesCounter){
this.message = message; this.message = message;
this.emailProperties = emailProperties; this.emailProperties = emailProperties;
this.emailServiceManager = emailServiceManager; this.emailServiceManager = emailServiceManager;
this.taskLatch = taskLatch; this.taskLatch = taskLatch;
this.spectrumServiceQuotes = spectrumServiceQuotes; this.spectrumServiceQuotes = spectrumServiceQuotes;
this.emailCounter = emailCounter; this.emailCounter = emailCounter;
this.batchesCounter = batchesCounter;
} }
@Override @Override
@ -79,7 +82,7 @@ public class SpectrumParsingActuator implements Runnable{
String subject = null; String subject = null;
try { try {
//获取邮件主题 //获取邮件主题
subject = emailServiceManager.getMailSubject(message); subject = emailServiceManager.getMailSubject(message,this.batchesCounter);
//解析之前先把邮件唯一信息存储到redis //解析之前先把邮件唯一信息存储到redis
String messageId = ((MimeMessage) message).getMessageID(); String messageId = ((MimeMessage) message).getMessageID();
@ -90,7 +93,7 @@ public class SpectrumParsingActuator implements Runnable{
SpectrumLogManager.mailSpectrumLogManager.offer(Thread.currentThread().getId(),null); SpectrumLogManager.mailSpectrumLogManager.offer(Thread.currentThread().getId(),null);
//所有邮件都需以.eml格式存储到eml文件夹中 //所有邮件都需以.eml格式存储到eml文件夹中
final File emlFile = emailServiceManager.downloadEmailToEmlDir(message, emailCounter.getCurrValue()); final File emlFile = emailServiceManager.downloadEmailToEmlDir(message, emailCounter.getCurrValue(),this.batchesCounter);
//保存邮件日志到PG数据库 //保存邮件日志到PG数据库
this.spectrumServiceQuotes.getMailLogService().create(message,emailProperties); this.spectrumServiceQuotes.getMailLogService().create(message,emailProperties);
@ -104,7 +107,7 @@ public class SpectrumParsingActuator implements Runnable{
// 如果邮件内容校验成功 将文件保存到eml目录 并删除邮件对象 // 如果邮件内容校验成功 将文件保存到eml目录 并删除邮件对象
if(checkMailContent(mailContent,subject)){ if(checkMailContent(mailContent,subject)){
AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum();
spectrumHandler.init(mailContent.toString(),emlFile.getName(),spectrumServiceQuotes,new StringBuilder(),SpectrumSource.FORM_EMAIL_SERVICE.getSourceType()); spectrumHandler.init(mailContent.toString(),emlFile.getName(),spectrumServiceQuotes,new StringBuilder(),SpectrumSource.FORM_EMAIL_SERVICE.getSourceType(),batchesCounter);
final boolean matchResult = spectrumHandler.saveEmailToLocal(); final boolean matchResult = spectrumHandler.saveEmailToLocal();
if(matchResult){ if(matchResult){
//开始解析 //开始解析
@ -112,7 +115,7 @@ public class SpectrumParsingActuator implements Runnable{
}else{ }else{
log.warn("This email {} parsing failed and is not listed in the Met, Alert, SOH, Sample, Detbkphd, QC, Gasbkphd spectra.",subject); log.warn("This email {} parsing failed and is not listed in the Met, Alert, SOH, Sample, Detbkphd, QC, Gasbkphd spectra.",subject);
} }
emailServiceManager.removeMail(message); emailServiceManager.removeMail(message,batchesCounter);
}else { }else {
// 如果邮件内容校验失败(邮件内容不完整) 将错误邮件从eml移动到emlError // 如果邮件内容校验失败(邮件内容不完整) 将错误邮件从eml移动到emlError
if (Objects.nonNull(emlFile) && emlFile.exists()){ if (Objects.nonNull(emlFile) && emlFile.exists()){
@ -125,12 +128,12 @@ public class SpectrumParsingActuator implements Runnable{
} catch (Exception e) { } catch (Exception e) {
// 如果不是下载导致的失败则删除下载的邮件对象 // 如果不是下载导致的失败则删除下载的邮件对象
if(!(e instanceof DownloadEmailException)){ if(!(e instanceof DownloadEmailException)){
emailServiceManager.removeMail(message); emailServiceManager.removeMail(message,batchesCounter);
} }
e.printStackTrace(); e.printStackTrace();
}finally { }finally {
try { try {
EmailLogEvent expungeEvent = new EmailLogEvent(EmailLogManager.GS_TYPE_GET,EmailLogManager.DONE); EmailLogEvent expungeEvent = new EmailLogEvent(this.batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,EmailLogManager.DONE);
EmailLogManager.getInstance().offer(Thread.currentThread().getId(),expungeEvent); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),expungeEvent);
EmailLogManager.getInstance().writeLog(Thread.currentThread().getId()); EmailLogManager.getInstance().writeLog(Thread.currentThread().getId());

View File

@ -90,4 +90,6 @@ public class SpectrumServiceQuotes {
*/ */
private final Object originalLibraryLock = new Object(); private final Object originalLibraryLock = new Object();
private final BatchesCounter batchesCounter;
} }