我有一个文件入站适配器,连接到文件出站网关。下面是配置。
*
*
当天早些时候在一个实例上按预期处理了一堆文件。几个小时后,另一个实例由于某种原因而重新启动,并开始处理已经在另一个实例上处理过的消息。它导致出站网关的每个消息都出现文件未找到的异常
2015-02-19 00:46:15,761 [task-scheduler-8]信息org.springframework.integration.file.FileWritingMessageHandler-无法移动文件'/ tcserver / mounts / file_int / source / b31d688bc85c429bb4748f56a38f4e61'。使用复制和删除后备。
2015-02-19 00:46:15,762 [task-scheduler-8]调试org.springframework.integration.handler.LoggingHandler-(内部bean)#8收到消息:[Payload = org.springframework.integration.MessageHandlingException:失败将消息有效负载写入文件] [Headers = {timestamp = 1424328375761,id = ad494ba5-795f-40d0-b523-74998088028e}]]
2015-02-19 00:46:15,762 [task-scheduler-8]错误org.springframework.integration.handler.LoggingHandler-org.springframework.integration.MessageHandlingException:无法将消息有效负载写入文件
在org.springframework.integration.file.FileWritingMessageHandler.handleRequestMessage(FileWritingMessageHandler.java:293)
在org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:134)处
在org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)
.....
造成原因:java.io.FileNotFoundException:/ tcserver / mounts / file_int / source / b31d688bc85c429bb4748f56a38f4e61(无此类文件或目录)
在java.io.FileInputStream.open(本机方法)
在java.io.FileInputStream(FileInputStream.java:146)
在org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:63)
在org.springframework.integration.file.FileWritingMessageHandler.handleFileMessage(FileWritingMessageHandler.java:352)
在org.springframework.integration.file.FileWritingMessageHandler.handleRequestMessage(FileWritingMessageHandler.java:277)
1)在服务器中的系统关闭之前,spring是否会保存系统状态。
2)关于为什么会发生这种情况的任何解释都可以大大帮助
最佳答案
如果您有多个实例引用同一个源目录,则需要使用一个持久文件列表过滤器,以及一个MetadataStore
(例如Redis)以在实例之间共享状态。
请参见the documentation。