I am using Spring(boot) on my project and I access a JMS Queue (ActiveMQ) using :
@JmsListener(destination = "mydestinationQueue")
public void processMessage(String content) {
//do something
}
And it works perfectly but I need to be able to stop/pause/start this bean programatically (a REST call or something like that)
When I stop or pause this bean I want to be sure to have fully processed the current message.
any idea about that ?
thanks
There's a bean of type
JmsListenerEndpointRegistry
(nameorg.springframework.jms.config.internalJmsListenerEndpointRegistry
).You can access the JMS listener containers from the registry (all or by name) and call
stop()
on the one(s) you want; the container will stop after any in-process messages complete their processing.Here is the solution I've found