我在春天的啓動應用程序的工作來讀取從FTP服務器的文件和數據寫入到數據庫中刪除的文件。我使用Spring集成FTP與流(FtpStreamingMessageSource)Spring的集成的FTP流文件從服務器
@Bean
@InboundChannelAdapter(channel = "streamPHI", poller = @Poller(fixedDelay = "2000", maxMessagesPerPoll="-1"))
public MessageSource<InputStream> ftpMessageSourcePHI() {
FtpStreamingMessageSource messageSource = new FtpStreamingMessageSource(templatePhi, null);
messageSource.setRemoteDirectory(remoteDirectory);
messageSource.setFilter(new FtpPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "streaming"));
return messageSource;
}
當輪詢開始這把流本進入另一個通道
@Bean
@Transformer(inputChannel = "streamPHI", outputChannel = "data")
public org.springframework.integration.transformer.Transformer transformerPhi() {
return new StreamTransformer();
}
,它成功地獲取文件,而且還從刪除文件遠程FTP服務器。這不是必需的。任何人都可以提出可能的原因嗎?
感謝
----更新
但在我而言,我還沒有寫任何東西刪除該文件。在第一個「轉換」之後,我使用了另一個轉換,它將文件的內容從字節轉換爲字符串。然後,服務激活器解析並將其保存到數據庫中。
@Bean
@Transformer(inputChannel = "data", outputChannel = "parse-shipping")
public org.springframework.integration.transformer.Transformer handler() {
return new ByteToStringTransformer();
}
@ServiceActivator(inputChannel = "parse-shipping")
public void parseShippingInformation(String shipFileContent){
...
}
@Component
public class ByteToStringTransformer extends AbstractTransformer {
@Override
protected Object doTransform(Message<?> message) throws Exception {
byte[] x = (byte[]) message.getPayload();
StringBuilder str = new StringBuilder();
for (byte b : x) {
str.append((char) b);
}
str.append(message.getHeaders().get("file_remoteFile"));
return str.toString();
}
}
是否有FTP設置任何可能會造成這個? (同時我也正在研究這個,但是任何提示會有所幫助)
你有解決這個任何配置(.XML)文件,您可以顯示? – ochi
不,沒有XML配置。 –