Ich habe eine Datei, die SI aus dem Ordner liest, aber meine Anwendung wird auf zwei Clustern bereitgestellt, so dass die Datei wird zweimal gelesen, so dass ich Datei-Schließmechanismus im Frühling Integration verwendet Aber in diesem Fall habe ich festgestellt, dass meine Dateien überhaupt nicht verarbeitet werden. Was ich vermisse?Wie Dateisperre Mechanismus in SI zum Lesen von Dateien verwendet
UPDATE: Ich verwende Filelocker Klasse auf diese Weise FileInbound Adapter
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) {
}
Ich habe meine Frage mit Code, den ich verwende, aktualisiert. Ist das korrekt? –
Ihr Code macht keinen Sinn. Es sperrt nichts und es ist nicht Thread-sicher. Warum einfach nicht mit der Empfehlung folgen und 'FileSystemPersistentAcceptOnceFileListFilter' nicht verwenden: http://docs.spring.io/spring-integration/reference/html/files.html#file-reading? –