2017-08-25 1 views
0

Mon exigence est de traiter (appeler Webservice) la liste des messages les uns après les autres. Si le premier message est réussi, ne traiter que le deuxième message et ainsi de suite. J'utilise Splitter ici pour diviser les messages. Inside Splitter J'ai utilisé Delayer (pas de persistance).Delayer avec Splitter, les messages ne traitent pas en série

Le problème est dès que les premiers messages arrivent à delayer, 2ème message dans le traitement de démarrage de la liste, sans attendre que le premier message soit terminé.

Je crois que cela se produit parce que delayer ne bloque pas les threads.

Est-ce que je peux réaliser cette fonctionnalité en utilisant Splitter et delayer?

+0

Vous devez expliquer pourquoi utilisez-vous Delayer là du tout –

+0

je dois attendre un événement pour terminer, et alors seulement appeler webservice. J'utilise delayer afin que je puisse vérifier la base de données pour l'achèvement de l'événement. Une fois l'événement terminé, j'appelle webservice. –

Répondre

1

Le delayer est conçu de cette façon; il planifie le message à traiter dans le futur. Si vous voulez simplement ralentir la vitesse à laquelle vous traitez les divisions; il suffit d'ajouter un service POJO (appelé par un activateur de service) qui a un Thread.sleep(...) et renvoie le message d'entrée.

public Message<?> sleeper(Message<?>) throws InterruptedException { 
    Thread.sleep(1000); 
}