2016-03-22 7 views
0

Ich habe ein Szenario mit mehreren Dateien mit Spring Batch verarbeitet werden.Löschen von Dateien nach partitionierten Schritt Verarbeitung

Ich implementierte dies mit einem Master-Schritt und einem partitionierten Slave-Schritt, die jede einzelne Datei über Partitionierer verarbeiten Es funktioniert gut, aber jetzt möchte ich erfolgreich verarbeitete Dateien archivieren/löschen.

habe ich versucht, mehr Möglichkeiten, aber keinen Erfolg:

-in eine Afterstep-Methode auf Slave Schritt StepExecutionListener aber der Schreiber hält Sperre für die Datei

-in einen neuen Schritt nach Master Schritt, aber ich don Ich weiß nicht, wie man erfolgreich verarbeitete Dateinamen bekommt, ich denke, das ist eine Information, die mit Slave-Schritten geteilt werden muss, auch Thread-Sicherheit muss in Betracht gezogen werden. Dieser Ansatz hat auch den Nachteil, dass er darauf wartet, dass alle Slave-Schritte enden.

Vielen Dank im Voraus, Adrian

Antwort

0

wenn Sie annehmen können warten, bis alle Schritte Slave vor dem Start Löschen von Dateien beenden Sie die erfolgreich verarbeitet Dateinamen mit

public class CustomTasklet implements Tasklet { 

    @Override 
    public RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception { 
    Collection<StepExecution> stepExecutions = chunkContext.getStepContext().getStepExecution().getJobExecution().getStepExecutions(); 
    for (StepExecution stepExecution : stepExecutions) { 
     if (stepExecution.getExecutionContext().containsKey("fileName") 
      && ExitStatus.COMPLETED.equals(stepExecution.getExitStatus())) { 

     String file = stepExecution.getExecutionContext().getString("fileName"); 
     // delete file 

     } 
    } 
    } 
} 

erreichen können, wenn Sie die kundenspezifische MultiResourcePartitioner.keyName, müssen Sie den "fileName" über

+0

ändern Hallo Michael, Vielen Dank für Ihre Antwort, es funktioniert. Ich denke, es gibt keine Lösung, um die Datei nach jedem Slave-Schritt zu löschen, also muss ich das akzeptieren. –

Verwandte Themen