Pregunta

Es allí una manera de iniciar un SimpleMessageListenerContainer como detenido?

es decir,No quiero consumir cualquier tipo de mensajes JMS hasta más tarde, cuando un usuario va a ejecutar una acción para iniciar el contenedor de JMS

He intentado llamar .stop() tan pronto como puedo crear el bean...pero parece ser demasiado temprano.

Llamamiento de inicio/parada después funciona bien, pero no quiero arriesgar el procesamiento de los mensajes hasta que el usuario está listo.

¿Fue útil?

Solución

El SimpleMessageListenerContainer implementa el SmartLifecycle la interfaz.Esta interfaz define un método isAutoStartup.Cuando este método devuelve true el componente se iniciará automáticamente.

La mayoría de los granos de la aplicación de la SmartLifecycle la interfaz también tiene un método setAutoStartup para permitir la configuración de esta propiedad.Ajuste false deshabilitar el inicio automático de los componentes.

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

O en Java Config

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

Por el momento no es posible establecer esta propiedad utilizando jms espacio de nombres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top