我們需要使用同時運行的多個駱駝接口實例寫入單個文件。 該文件位於使用SMB安裝在JBoss服務器上的Windows共享文件系統上。使用駱駝文件組件在同一個掛載的文件夾上執行多個實例
我們使用camel文件組件來將每個實例的文件寫入本地文件。 下面是駱駝背景下端點URI
file:/fuse/server/location/proc?fileName=abc.csv&fileExist=Append
文件生成具有當寫入從單個實例中發生任何問題,但在多個實例的情況下,隨意行垃圾字符添加到文件中。
我們正在使用JBoss的6.0.0保險絲和接口已經使用駱駝2.10版本編寫。
這怎麼解決?這是SMB安裝或接口需要處理它的問題。
如果多個生產者寫入同一個文件,那麼我可以看到垃圾被添加,因爲它們覆蓋了其他人的訪問權限。一個文件不是一個可以被許多生產者一次寫入的對象,這就是爲什麼,例如,如果你在Excel中打開一個CSV文件,然後在記事本中,並試圖保存記事本版本,它會抱怨說文件被鎖定。您需要序列化對文件的訪問。該文件無法處理寫入該文件的兩個生產者,而沒有對首先寫入的人進行某種形式的控制等。認爲文件鎖定。 – Namphibian
我假設駱駝文件組件會照顧它。這是否意味着我必須手動處理相同的問題。 – Yoogi
這真的取決於文件系統。 Java可能在開源文件系統上效果更好,因爲他們的工程師可以創建特定於該文件系統的字節碼,他們畢竟可以讀取源碼。由於中小企業MS被法院強制開放協議,因此中小企業股票很好,但仍存在很多灰色地帶。我的建議是,而不是這些生產者發送數據到一個文件,使他們發送到一個排隊組件,如seda,並讓消息一個接一個地排隊,讓seda處理消息,因爲它將是一個先進先出隊列。無需手動完成。 – Namphibian