What are the advantages of using DefaultJmsListenerContainerFactory
over DefaultMessageListenerContainer
?
If i configure DMLC directly , i do get a handle to check the status by calling
isRunning()
. Also i do get a facility to start and stop the DMLCHowever, per new spring specs, if i configure
DefaultJmsListenerContainerFactory
, i do not get handle of DMLC, so i am unable to do any of above operations.
So looking at above limitation, can somebody explain why one should use DefaultJmsListenerContainerFactory
over DMLC
Also, if i use DefaultJmsListenerContainerFactory
, what are the ways to achive above functionality?
The factory was introduced to support the creation of listener containers for
@JmsListener
annotated POJO methods.If you are not using that mechanism, you can continue to define your DLMC directly.
EDIT
When using
@JmsListener
, the containers are not registered as beans themselves, but are available using the registry bean; you can get a reference to the container so you can start/stop etc.See the javadocs for the
JmsListenerEndpointRegistry
for how to get references to the containers either individually by id, or all.EDIT2
I am not sure what you mean in comment 3; the registry has all containers, regardless of which container factory was used to create the container...
If you are using
configureListenerContainers()
to programmatically create endpoints, you have to provide them with containers not container factories.