Je lisais dans la documentation du cadre de printemps et je trouvais une section sur la collecte d'événements au printemps en utilisant ApplicationContext Code>. Après avoir lu quelques paragraphes, j'ai constaté que les événements de printemps sont soulevés de manière synchrone. Y a-t-il un moyen de soulever des événements asynchrones? Votre aide est très appréciée. Je cherche quelque chose de similaire qui m'aiderait à compléter mon module. P>
4 Réponses :
printemps elle-même (Afaik) fonctionne de manière synchrone, mais ce que vous pouvez faire est de créer votre propre proxy de candidatureListener - une classe qui implémente cette interface, mais au lieu de gérer l'événement qui le déléguette en envoyant à un autre (ou nouveau) fil, Envoi de message JMS, etc. p>
Les stratégies de notification alternatives peuvent être obtenues en implémentant ApplicationEventMulticaster Code> (voir
Taskexecuterer code> abstraction (voir Javadoc ). P>
Essayez ceci remplacer l'applicationEventMulticaster Bean dans des ressources.Groovy de sorte qu'il utilise un piscine de thread:
Quelque chose comme ça a fonctionné pour moi, c'est-à-dire que j'ai utilisé p>
import java.util.concurrent.* import org.springframework.context.event.* beans = { applicationEventMulticaster(SimpleApplicationEventMulticaster) { taskExecutor = Executors.newCachedThreadPool() } }
simple asynchrone éditeur: p> écouteur: p> Vous devez sous-classe Vous voudrez peut-être implémenter applicatiflistener code>:
applicatifEvent code> avec vos événements spécifiques. Vous pouvez configurer
SimpleApplicationVentMulticaster code> et son
TASKEXecutor code> dans un fichier XML. P>
ApplicationEventPublisheraware code> dans votre classe d'écoute et transmettez un objet source (au lieu de la chaîne vide) dans le constructeur d'événement. p> p>
Utilisez un SimbleasyncTaskexecutor du printemps. Reportez-vous: Baeldung.com/spring-events
J'aimerais que ce soit là depuis 2009. :)