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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top