Initialiser SimpleMessageListenerContainer comme arrêté
-
21-12-2019 - |
Question
Existe-t-il un moyen d'initialiser un SimpleMessageListenerContainer
comme arrêté?
c'est à dire.Je ne souhaite consommer aucun message JMS avant qu'un utilisateur exécute une action pour démarrer le conteneur JMS.
J'ai essayé d'appeler .stop()
dès que je crée le bean...mais il semble qu'il soit trop tôt.
Appeler stop/start plus tard fonctionne bien mais je ne veux pas risquer de traiter des messages jusqu'à ce que l'utilisateur soit prêt.
La solution
Le SimpleMessageListenerContainer
met en œuvre le SmartLifecycle
interface.Cette interface définit une méthode isAutoStartup
.Lorsque cette méthode revient true
le composant démarrera automatiquement.
La plupart des beans implémentant le SmartLifecycle
l'interface a également une méthode setAutoStartup
pour permettre la définition de cette propriété.Le régler sur false
désactivera le démarrage automatique du composant.
<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
<property name="autoStartup" value="false" />
// Other Properties initialization
</bean>
Ou dans Java Config
@Bean
public SimpleMessageListenerContainer container() {
SimpleMessageListenerContainer smlc = new SimpleMessageListenerContainer();
smlc.setAutoStartup(false);
...
return smlc;
}
Pour le moment, il n'est pas possible de définir cette propriété à l'aide de l'espace de noms jms.