工作這是我的春天整合案例:Spring集成頭富集做連鎖
1)FTP適配器下載PDF文件
2)pdf2TextTransformer轉換PDF使用PDFBOX
3文本)pdfText2CsvTransformer將文本轉換爲csv
我在鏈中添加了一個richter,但是,似乎header沒有傳播到myErrorChannel,任何人都可以告訴我爲什麼?
這裏是我的調試日誌,標題file_originalFile不會傳播到myErrorChannel
][Headers={file_originalFile=D:\projects\DMTP\ftp\local2\6000047256 - Copy - Copy.pdf, file_name=6000047256 - Copy - Copy.pdf, id=a091fe5e-83f3-e48c-4be5-927849dbf31a, timestamp=1501472718172}]
11:45:18.180 DEBUG [task-scheduler-2][org.springframework.integration.channel.PublishSubscribeChannel] preSend on channel 'errorChannel', message: [Payload MessageTransformationException content=org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3][Headers={id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}]
11:45:18.180 DEBUG [task-scheduler-2][org.springframework.integration.handler.ServiceActivatingHandler] ServiceActivator for [org.spr[email protected]56eacc77] received message: [Payload MessageTransformationException content=org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3][Headers={id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}]
file_originalFile:null
MessageHeaders: {id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}
MessagePayload: org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3
11:45:18.182 DEBUG [task-scheduler-2][org.springframework.integration.handler.ServiceActivatingHandler] handler 'ServiceActivator for [org.spr[email protected]56eacc77]' produced no reply for request Message: [Payload MessageTransformationException content=org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3][Headers={id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}]
這裏是我的配置:
<bean id="ftpClientFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
<property name="host" value="${host}"/>
<property name="port" value="${availableServerPort}"/>
<property name="username" value="${userid}"/>
<property name="password" value="${password}"/>
</bean>
<bean id="cachingSessionFactory" class="org.springframework.integration.file.remote.session.CachingSessionFactory">
<constructor-arg ref="ftpClientFactory"/>
</bean>
<int:channel id="ftpChannelIn">
<int:queue capacity="1"/>
</int:channel>
<int-ftp:inbound-channel-adapter id="ftpInbound"
channel="ftpChannelIn"
session-factory="cachingSessionFactory"
filename-pattern="*.pdf"
auto-create-local-directory="true"
delete-remote-files="true"
remote-directory="/in2"
local-directory="D:/projects/DMTP/ftp/local2">
<!--<int:poller fixed-rate="1000"/>-->
<int:poller fixed-delay="1"/>
</int-ftp:inbound-channel-adapter>
<int:chain input-channel="ftpChannelIn">
<int:header-enricher>
<int:header name="foo" value="bar"/>
</int:header-enricher>
<file:file-to-bytes-transformer/>
<int:transformer ref="pdf2TextTransformer"/>
<int:transformer ref="pdfText2CsvTransformer"/>
<int-ftp:outbound-channel-adapter
remote-directory="/out"
session-factory="cachingSessionFactory"
remote-filename-generator="filenameGenerator"/>
</int:chain>
<int:channel id="ftpChannelOut">
</int:channel>
<bean id="filenameGenerator" class="file.DatedDirectoryFactory "/>
<int:poller default="true" fixed-delay="50"/>
<int:channel id="myErrorChannel"/>
<int:service-activator input-channel="errorChannel" ref="errorLogger"/>
謝謝,Gary 我的轉換是POJO,並且我爲你的信息添加了我的調試日誌,你會幫助檢查爲什麼頭文件file_originalFile不會傳播到myErrorChannel? –
另請參閱我的答案。 –
嘆息;正如你所見,「不起作用」對問題的解釋完全不足;您現在添加了一個關於錯誤頻道的重要部分。永遠不要,永遠不要問「沒用」的問題,沒有進一步的解釋。謝謝@ArtemBilan。 –