我在春天的启动应用程序的工作来读取从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配置。 –