Pergunta

Existe uma maneira de iniciar uma SimpleMessageListenerContainer como parado?

i.e.Eu não quero consumir quaisquer mensagens JMS até mais tarde, quando um usuário executar uma ação para iniciar o JMS recipiente

Eu tentei chamar .stop() assim que eu criar o bean...mas parece ser muito cedo.

Chamada stop/start, mais tarde, funciona bem, mas eu não quero correr o risco de processamento de todas as mensagens até que o usuário está pronto.

Foi útil?

Solução

O SimpleMessageListenerContainer implementa o SmartLifecycle interface.Esta interface define um método isAutoStartup.Quando este método retorna true o componente irá iniciar automaticamente.

A maioria dos grãos de implementação do SmartLifecycle a interface também tem um método setAutoStartup para permitir a configuração desta propriedade.Definindo-a false irá desactivar o início automático do componente.

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

Ou em Java Config

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

No momento, não é possível definir esta propriedade utilizando jms espaço de nomes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top