📄 parsefilequeue.java
字号:
package com.datangmobile.oss.omc.pc;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
//import com.datangmobile.oss.omc.server.pm.PmContext;
import com.datangmobile.oss.omc.pc.util.FileInfo;
//import com.datangmobile.oss.omc.pc.util.MessageSender;
public class ParseFileQueue {
/**
* 缓存所有文件的队列,当MDB收到消息后,就在此队列中删除<br>
* 有一个线程每一分钟轮询此队列,如果发现有超过3分钟的文件没有处理,则再次发送消息给解析的MDB<br>
* 这样可保证丢消息后的处理
*/
private LinkedList<FileInfo> queue = new LinkedList<FileInfo>();
private static ParseFileQueue instance = new ParseFileQueue();
/**
* 单例类
*
* @return
*/
public static ParseFileQueue getInstance() {
return instance;
}
/**
* 给解析的文件队列增加要解析的文件,并发出消息
*
* @param fileInfo
*/
public void putParseFile(FileInfo fileInfo) {
// 先设入时间
fileInfo.setFirstParseTime(new Date());
fileInfo.setLastParseTime(new Date());
fileInfo.setLastErrorCode(0);
fileInfo.setFirstErrorCode(0);
synchronized (queue) {
if (!queue.contains(fileInfo)) {
queue.addLast(fileInfo);
}
}
// 发送消息到解析模块
//MessageSender.sendNeedParseFile(fileInfo);
}
/**
* 删除队列中的某个Info
*
* @param fileInfo
*/
public boolean removeParseFile(FileInfo info) {
synchronized (queue) {
return queue.remove(info);
}
}
/**
* 对文件队列中的超过3分钟还没有处理的文件(可能是丢消息了),重新发消息
*
*/
public void sendFileToParse() {
LinkedList<FileInfo> list = new LinkedList<FileInfo>();
synchronized (queue) {
Iterator<FileInfo> itr = queue.iterator();
while (itr.hasNext()) {
FileInfo info = itr.next();
Date time = info.getLastParseTime();
// if (time != null
// && ((new Date().getTime() - time.getTime()) > PmContext
// .getPmContext().getResendMsgTime() * 1000)) {
list.add(info);
// 重新设置时间
info.setLastParseTime(new Date());
//}
}
}
for (FileInfo info : list) {
// 发送消息到解析模块
//MessageSender.sendNeedParseFile(info);
}
list.clear();
}
// public static void main(String[] args) {
// for (int i = 0; i < 10; i++) {
// FileInfo info = new FileInfo();
// File file = new File("" + i);
// info.setFile(file);
// putParseFile(info);
// }
// sendFileToParse();
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -