1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public void faireTraitements(MessageConsumer receiver) {
CountDownLatch countDownLatch = new CountDownLatch(1); // on attend la fin de 1 traitement
AtomicReference<Resultat> resultatTraitements = new AtomicReferece<>();
receiver.setMessageListener( message-> {
// traitement message...
resultatTraitements.set(new Resultat(...));
countDownLatch.countDown(); // le traitement est terminé
});
// traitements...
try {
if ( countDownLatch.await(30, TimeUnit.SECONDS) ) { // on attend le message
Resultat resultat = resultatTraitements.get();
// autre traitements...
}
else {
// le message n'est pas arrivé au bout de 30 secondes d'attente
}
}
catch(InterruptedException e){
//...
}
} |