Spring batch Une instance de travail existe déjà

OK,

Je sais que cela a été demandé avant, mais je n'arrive pas à trouver une réponse précise à ma question. Et ma question est: est-ce que je suis à l'aide de spring batch pour exporter les données vers SOLR search server. Il doit exécuter toutes les minutes, je peux exporter toutes les mises à jour. La première exécution de passe OK, mais la seconde se plaint avec:

2014-10-02 20:37:00,022 [defaultTaskScheduler-1] ERROR: catching
org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException: A job     instance already exists and is complete for parameters={catalogVersionPK=3378876823725152,
type=UPDATE}.  If you want to run this job again, change the parameters.
    at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:126)
    at 

Bien sûr, je peux ajouter une date en paramètre au moment de l'emploi comme celui-ci:

.addLong("time", System.getCurrentTimeMillis())

et puis le travail peut être exécuté plus d'une fois. Cependant, je tiens également à interroger la dernière exécution de la tâche, donc j'ai un code comme ceci:

DateTime endTime = new DateTime(0);
JobExecution je = jobRepository.getLastJobExecution("searchExportJob", new JobParametersBuilder().addLong("catalogVersionPK", catalogVersionPK).addString("type", type).toJobParameters());
if (je != null && je.getEndTime() != null) {
   endTime = new DateTime(je.getEndTime());
}

et ce ne retourne rien, parce que je n'ai pas le temps de paramètre. Semble que je peux exécuter le travail une fois et d'obtenir le dernier moment de l'exécution, ou je peux le faire tourner plusieurs fois et pas la dernière moment de l'exécution. Je suis vraiment bloqué 🙁

OriginalL'auteur Petar Tahchiev | 2014-10-02