我一直在研究Spring集成文件支持,我需要將文件從輸入目錄移動到輸出目錄。成功移動到輸出目錄後,應將其歸檔並從輸入目錄中刪除。我正在使用下面的配置來實現這一點。Spring集成 - 如何處理來自LoggingHandler的異常
請糾正我,如果我的配置可以更好的方式。
Spring集成配置:
<int:channel id="inboundFileChannel"/>
<int:channel id="outboundFileChannel"/>
<int:channel id="archiveFileChannel"/>
<int-file:inbound-channel-adapter channel="inboundFileChannel"
directory="file://${file.input.dir}" filename-pattern="*.txt" auto-startup="true" auto-create-directory="false">
<int:poller fixed-rate="${file.poller.interval}"/>
</int-file:inbound-channel-adapter>
<int:service-activator input-channel="inboundFileChannel" output-channel="outboundFileChannel" ref="fileHandler"/>
<int-file:outbound-gateway request-channel="outboundFileChannel" reply-channel ="archiveFileChannel" directory="file://${file.output.dir}"
mode="REPLACE" delete-source-files="false" auto-create-directory="false" />
<int:service-activator input-channel="archiveFileChannel" ref="archiveFileHandler" method="copyToArchiveDirectory"/>
<int:logging-channel-adapter channel="inboundFileChannel" level="DEBUG"/>
<bean id="fileHandler" class="FileHandler"/>
<bean id="archiveFileHandler" class="ArchiveFileHandler"/>
我在服務激活代碼,如果歸檔目錄不存在,它應該終止應用程序。因此,在運行應用程序時,第一次移動文件後,我刪除了歸檔目錄。然後我將新文件放入輸入目錄,文件被輪詢併發送到一個通道,但服務激活器處理程序未被拾取,並且不檢查存檔目錄是否存在。
我從日誌中發現消息第一次發送到ServiceActivatorHandler並移動了文件,但第二次消息發送到LoggingHandler。
2016-09-30 14:27:36,593 [task-scheduler-1] [file.FileReadingMessageSource] INFO - Created message: [GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=4f03f37d-7bb4-d630-72c0-360fd07d3b88, timestamp=1475263656593}]]
2016-09-30 14:27:36,593 [task-scheduler-1] [endpoint.SourcePollingChannelAdapter] DEBUG - Poll resulted in Message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=4f03f37d-7bb4-d630-72c0-360fd07d3b88, timestamp=1475263656593}]
2016-09-30 14:27:36,593 [task-scheduler-1] [channel.DirectChannel] DEBUG - preSend on channel 'inboundFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=4f03f37d-7bb4-d630-72c0-360fd07d3b88, timestamp=1475263656593}]
2016-09-30 14:27:36,624 [task-scheduler-1] [handler.ServiceActivatingHandler] DEBUG - ServiceActivator for [org.spr[email protected]3d1024ab] received message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=4f03f37d-7bb4-d630-72c0-360fd07d3b88, timestamp=1475263656593}]
2016-09-30 14:27:36,640 [task-scheduler-1] [handlers.FileHandler] INFO - File : c:\tmp\csvfiles\input\test1.txt is copied to : c:/tmp/csvfiles/output/
2016-09-30 14:27:36,640 [task-scheduler-1] [channel.DirectChannel] DEBUG - preSend on channel 'outboundFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=f53fbb89-d2f2-caab-f40b-cbd825238950, timestamp=1475263656640}]
2016-09-30 14:27:36,640 [task-scheduler-1] [file.FileWritingMessageHandler] DEBUG - [email protected]10cd27 received message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=f53fbb89-d2f2-caab-f40b-cbd825238950, timestamp=1475263656640}]
2016-09-30 14:27:36,671 [task-scheduler-1] [channel.DirectChannel] DEBUG - preSend on channel 'archiveFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\output\test1.txt, headers={file_originalFile=c:\tmp\csvfiles\input\test1.txt, id=ac2a9c1e-243d-5702-ef23-f715ebce18f8, timestamp=1475263656671}]
2016-09-30 14:27:36,671 [task-scheduler-1] [handler.ServiceActivatingHandler] DEBUG - ServiceActivator for [org.spr[email protected]5f6b71ba] received message: GenericMessage [payload=c:\tmp\csvfiles\output\test1.txt, headers={file_originalFile=c:\tmp\csvfiles\input\test1.txt, id=ac2a9c1e-243d-5702-ef23-f715ebce18f8, timestamp=1475263656671}]
2016-09-30 14:27:36,671 [task-scheduler-1] [handlers.FileHandler] INFO - Service Activator Activated
2016-09-30 14:27:36,671 [task-scheduler-1] [handlers.FileHandler] INFO - File name : test1.txt
2016-09-30 14:27:36,702 [task-scheduler-1] [utility.FileUtility] INFO - Archive file name : test1_2016-09-30_14-27-36-702.txt
2016-09-30 14:27:36,702 [task-scheduler-1] [handlers.FileHandler] INFO - c:\tmp\csvfiles\output
2016-09-30 14:27:36,702 [task-scheduler-1] [handlers.FileHandler] INFO - c:\tmp\csvfiles\archive
2016-09-30 14:27:36,718 [task-scheduler-1] [handlers.FileHandler] INFO - Successfully archived file : test1.txt
2016-09-30 14:27:36,718 [task-scheduler-1] [handlers.FileHandler] INFO - Source FIle Name with Path : c:\tmp\csvfiles\input\test1.txt
2016-09-30 14:27:36,718 [task-scheduler-1] [handlers.FileHandler] INFO - Successfully deleted file : test1.txtfrom directory: c:/tmp/csvfiles/input/
2016-09-30 14:27:36,718 [task-scheduler-1] [handler.ServiceActivatingHandler] DEBUG - handler 'ServiceActivator for [org.spr[email protected]5f6b71ba]' produced no reply for request Message: GenericMessage [payload=c:\tmp\csvfiles\output\test1.txt, headers={file_originalFile=c:\tmp\csvfiles\input\test1.txt, id=ac2a9c1e-243d-5702-ef23-f715ebce18f8, timestamp=1475263656671}]
2016-09-30 14:27:36,718 [task-scheduler-1] [channel.DirectChannel] DEBUG - postSend (sent=true) on channel 'archiveFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\output\test1.txt, headers={file_originalFile=c:\tmp\csvfiles\input\test1.txt, id=ac2a9c1e-243d-5702-ef23-f715ebce18f8, timestamp=1475263656671}]
2016-09-30 14:27:36,718 [task-scheduler-1] [channel.DirectChannel] DEBUG - postSend (sent=true) on channel 'outboundFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=f53fbb89-d2f2-caab-f40b-cbd825238950, timestamp=1475263656640}]
2016-09-30 14:27:36,718 [task-scheduler-1] [channel.DirectChannel] DEBUG - postSend (sent=true) on channel 'inboundFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\input\test1.txt, headers={id=4f03f37d-7bb4-d630-72c0-360fd07d3b88, timestamp=1475263656593}]
2016-09-30 14:27:36,718 [task-scheduler-1] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:37,250 [task-scheduler-2] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:38,248 [task-scheduler-1] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:39,250 [task-scheduler-3] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:40,249 [task-scheduler-3] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:41,247 [task-scheduler-4] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:42,246 [task-scheduler-1] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:43,244 [task-scheduler-5] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:44,242 [task-scheduler-2] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:45,241 [task-scheduler-6] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:46,239 [task-scheduler-6] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:47,238 [task-scheduler-7] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:48,252 [task-scheduler-7] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:49,239 [task-scheduler-8] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:50,241 [task-scheduler-8] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:51,239 [task-scheduler-8] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:52,209 [task-scheduler-5] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:53,278 [task-scheduler-5] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:54,247 [task-scheduler-2] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:55,245 [task-scheduler-2] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:56,252 [task-scheduler-6] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:57,238 [task-scheduler-6] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:58,253 [task-scheduler-7] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:27:59,238 [task-scheduler-7] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:00,252 [task-scheduler-7] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:01,249 [task-scheduler-7] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:02,249 [task-scheduler-10] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:03,247 [task-scheduler-5] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:04,249 [task-scheduler-3] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:05,248 [task-scheduler-3] [file.FileReadingMessageSource] DEBUG - Added to queue: [c:\tmp\csvfiles\input\test2.txt]
2016-09-30 14:28:05,248 [task-scheduler-3] [file.FileReadingMessageSource] INFO - Created message: [GenericMessage [payload=c:\tmp\csvfiles\input\test2.txt, headers={id=be245baf-52b4-8196-714b-8003b55d347b, timestamp=1475263685248}]]
2016-09-30 14:28:05,248 [task-scheduler-3] [endpoint.SourcePollingChannelAdapter] DEBUG - Poll resulted in Message: GenericMessage [payload=c:\tmp\csvfiles\input\test2.txt, headers={id=be245baf-52b4-8196-714b-8003b55d347b, timestamp=1475263685248}]
2016-09-30 14:28:05,248 [task-scheduler-3] [channel.DirectChannel] DEBUG - preSend on channel 'inboundFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\input\test2.txt, headers={id=be245baf-52b4-8196-714b-8003b55d347b, timestamp=1475263685248}]
2016-09-30 14:28:05,248 [task-scheduler-3] [handler.LoggingHandler] DEBUG - org.springframework.integration.handler.LoggingHandler#0 received message: GenericMessage [payload=c:\tmp\csvfiles\input\test2.txt, headers={id=be245baf-52b4-8196-714b-8003b55d347b, timestamp=1475263685248}]
2016-09-30 14:28:05,263 [task-scheduler-3] [handler.LoggingHandler] DEBUG - c:\tmp\csvfiles\input\test2.txt
2016-09-30 14:28:05,279 [task-scheduler-3] [channel.DirectChannel] DEBUG - postSend (sent=true) on channel 'inboundFileChannel', message: GenericMessage [payload=c:\tmp\csvfiles\input\test2.txt, headers={id=be245baf-52b4-8196-714b-8003b55d347b, timestamp=1475263685248}]
2016-09-30 14:28:06,246 [task-scheduler-3] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:07,248 [task-scheduler-6] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:08,232 [task-scheduler-1] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:09,261 [task-scheduler-9] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
2016-09-30 14:28:10,244 [task-scheduler-9] [endpoint.SourcePollingChannelAdapter] DEBUG - Received no Message during the poll, returning 'false'
由於我刪除了歸檔目錄(應用程序正在運行時),所以將消息發送到LoggingHandler。 任何人都可以建議如何處理該異常,我可以編寫代碼來終止應用程序。
如果我缺少任何東西,請糾正我。
謝謝加里。它幫助。 – Abhilash