0
私はSIがフォルダから読み込む1つのファイルを持っていますが、私のアプリケーションは2つのクラスタに配備されているので、ファイルは2回読み込まれるので、その場合、私が見つけたのは、私のファイルがまったく処理されていないということです。私は何が足りないのですか?ファイル読み込みのためにSIで提供されるファイルロックメカニズムの使い方
UPDATE:私はあなたがFileLock
からFileChannel
を使用する必要があり、ファイルの内容を読むにはFileInboundアダプタ
private FileInboundChannelAdapterSpec readFilefromDirectory(){
return Files.inboundAdapter(getInboxDirectory())
.autoCreateDirectory(true)
.locker(asFileLocker)
.preventDuplicates();
}
@Component
public class ASFileLocker implements FileLocker{
@Autowired
Properties properties;
@Override
public boolean lock(File fileToLock) {
try{
if(properties.getProperty("fileName").equalsIgnoreCase(fileToLock.getName())){
return false;
}
else{
properties.setProperty("fileName", fileToLock.getName());
return true;
}
}catch(Exception e){
return false;
}
}
@Override
public boolean isLockable(File file) {
String fileName= properties.getProperty("fileName");
if(fileName.equalsIgnoreCase(file.getName())){
return true;
}
else{
return false;
}
}
@Override
public void unlock(File fileToUnlock) {
}
私はこのコードを使って自分の質問を更新しました。これは正しいですか? –
あなたのコードは意味をなさない。何もロックせず、スレッドセーフでもありません。なぜ、推奨に従わず、 'FileSystemPersistentAcceptOnceFileListFilter'を使わないのはなぜですか?http://docs.spring.io/spring-integration/reference/html/files.html#file-reading? –