2017-06-16 43 views
2

我在春天的啓動應用程序的工作來讀取從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設置任何可能會造成這個? (同時我也正在研究這個,但是任何提示會有所幫助)

+0

你有解決這個任何配置(.XML)文件,您可以顯示? – ochi

+1

不,沒有XML配置。 –

回答

0

沒有什麼在將刪除該文件的適配器;實際上文檔提到...

與非流式入站通道適配器不同,此適配器默認情況下不會阻止重複。如果不刪除遠程文件(例如,使用出站網關與rm命令),並要防止文件被再次處理,可以配置在過濾器屬性的FtpPersistentFileListFilter。如果您實際上不想保持該狀態,則可以將內存中的SimpleMetadataStore與過濾器一起使用。如果你想使用文件名模式(或正則表達式),使用CompositeFileListFilter。

別的東西必須刪除你的文件。

+0

謝謝你加里。但我沒有寫任何會刪除文件,但不知何故它被刪除..請看我編輯的帖子,如果你能找到任何東西。我已經在本地FTP服務器上測試過了,它並沒有刪除任何文件,但是當添加到生產FTP時,它是這樣做的。 –

+0

必須是服務器。 ftp協議的網絡跟蹤將證明它。 –