Java JMS发布者停止向主题发布消息
我需要一些关于旧式应用程序调试/故障排除的指导。它是一个java应用程序,设计用于处理一个文件夹中的文件,并使用JMS(java消息传递服务)将其放到主题中。这个应用程序的问题是它会突然停止处理.txt文件,而不会抛出任何错误。例如,如果我将400个文件放在“导出”文件夹中,那么应用程序将开始处理这些文件并将其放在“导入”文件夹中(模拟将消息放在主题上的过程),但在处理300个文件或有时389个文件后,它将停止,以此类推。负责处理这些文件的功能如下所示。您可以看到,如果在处理过程中遇到任何异常,它将捕获多个catch()条件,但到目前为止,我在日志中看不到有助于确定问题确切原因的任何内容Java JMS发布者停止向主题发布消息,java,spring,jms,Java,Spring,Jms,我需要一些关于旧式应用程序调试/故障排除的指导。它是一个java应用程序,设计用于处理一个文件夹中的文件,并使用JMS(java消息传递服务)将其放到主题中。这个应用程序的问题是它会突然停止处理.txt文件,而不会抛出任何错误。例如,如果我将400个文件放在“导出”文件夹中,那么应用程序将开始处理这些文件并将其放在“导入”文件夹中(模拟将消息放在主题上的过程),但在处理300个文件或有时389个文件后,它将停止,以此类推。负责处理这些文件的功能如下所示。您可以看到,如果在处理过程中遇到任何异常,
public void tmwRunFileWatcher() {
LOGGER.info("inputDirectory204##" + inputDirectory204);
boolean valid;
int eventCount = 0;
try {
do {
WatchKey watchKey = watchService.take();
eventCount = 0;
// List<WatchEvent<?>> eventList = watchKey.pollEvents();
// LOGGER.info("Number of events in list: {}", eventList.size());
for (WatchEvent event : watchKey.pollEvents()) {
eventCount++;
LOGGER.info("Event count: {}", eventCount);
if(StandardWatchEventKinds.OVERFLOW.equals(event.kind())) {
LOGGER.info("An overflow event has occurred. You will need to reprocess files");
}
if (StandardWatchEventKinds.ENTRY_CREATE.equals(event.kind())) {
fileName = event.context().toString();
LOGGER.info("File Name before ignored: {}", fileName);
if (!(fileName.startsWith("TEMP_"))) {
Properties prop = jmsHeader(fileName);
String jmsMsg = processTmwMessage(inputDirectory204, fileName);
boolean msgFlag;
if (jmsMsg !=null && !(jmsMsg.equalsIgnoreCase("NOT READY"))) {
msgFlag = tmwPublisher.publishTmwMessageEvent(jmsMsg, prop);
if (msgFlag) {
move(inputDirectory204, fileName, dRDirectoryProducer);
}
LOGGER.info("File Processed successfully: {}",fileName);
}else{
LOGGER.info("File could not processed due to exception: {}",fileName);
}
}
}
}
valid = watchKey.reset();
LOGGER.info("WatchKey reset value: {}", valid);
} while (valid);
} catch (ClosedWatchServiceException closedWatchServiceException) {
LOGGER.error("Caught ClosedWatchServiceException: {}", closedWatchServiceException.getMessage());
} catch(InterruptedException interruptedException){
LOGGER.error("Caught InterruptedException: {}", interruptedException.getMessage());
} catch (MissingParentResourceException missingException) {
LOGGER.error("Caught InterruptedException: {}", missingException.getMessage());
} catch(Exception e){
LOGGER.error("Caught a Generic Exception: {}", e.getMessage());
}
}
public void tmwrunfelewatcher(){
LOGGER.info(“inputDirectory204##”+inputDirectory204);
布尔有效;
int eventCount=0;
试一试{
做{
WatchKey WatchKey=watchService.take();
eventCount=0;
//名单