Inicializar SimpleMessageListenerContainer como detenido
-
21-12-2019 - |
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.
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.