Domanda

C'è un modo per inizializzare un SimpleMessageListenerContainer come fermato?

I.e.Non voglio consumare messaggi JMS fino a tardi quando un utente eseguirà un'azione per avviare il contenitore JMS

Ho provato a chiamare .stop() non appena creo il fagiolo ... ma sembra essere troppo presto.

Chiamata Stop / Start in seguito funziona bene ma non voglio rischiare di elaborare alcun messaggio fino a quando l'utente non è pronto.

È stato utile?

Soluzione

the SimpleMessageListenerContainer < / A> implementa il SmartLifecycle interfaccia. Questa interfaccia definisce un metodo isAutoStartup . Quando questo metodo restituisce true il componente inizierà automaticamente.

La maggior parte dei fagioli L'implementazione dell'interfaccia SmartLifecycle ha anche un metodo setAutoStartup per consentire l'impostazione di questa proprietà. L'impostazione su false disabiliterà l'avvio automatico del componente.

<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
    <property name="autoStartup" value="false" />
    // Other Properties initialization
</bean>
.

o in java config

@Bean
public SimpleMessageListenerContainer container() {
    SimpleMessageListenerContainer smlc = new SimpleMessageListenerContainer();
    smlc.setAutoStartup(false);
    ...
    return smlc;
}
.

Al momento non è possibile impostare questa proprietà utilizzando lo spazio dei nomi JMS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top