与DefaultJmsListenerContainerFactory
相比,使用DefaultMessageListenerContainer
有什么优势?
isRunning()
来获取检查状态的句柄。我也确实有启动和停止DMLC DefaultJmsListenerContainerFactory
,则无法获得DMLC的句柄,因此无法执行上述任何操作。 因此,从上述限制来看,有人可以解释为什么应该在DMLC上使用
DefaultJmsListenerContainerFactory
另外,如果我使用
DefaultJmsListenerContainerFactory
,实现上述功能的方法是什么? 最佳答案
引入工厂是为了支持为@JmsListener
注释的POJO方法创建监听器容器。
如果不使用该机制,则可以继续直接定义DLMC。
编辑
使用@JmsListener
时,容器本身未注册为Bean,但可通过注册表Bean使用;您可以获得对该容器的引用,因此可以启动/停止等。
有关如何按id或全部获取对容器的引用,请参见javadocs以获取JmsListenerEndpointRegistry
。
EDIT2
我不确定您在评论3中的意思;注册表包含所有容器,无论使用哪个容器工厂创建容器...
@JmsListener(id="foo", destination="foo", containerFactory="one")
public void listen1(String payload) {
System.out.println(payload + "foo");
}
@JmsListener(id="bar", destination="bar", containerFactory="two")
public void listen2(String payload) {
System.out.println(payload + "bar");
}
如果使用
configureListenerContainers()
以编程方式创建端点,则必须为它们提供容器而不是容器工厂。关于spring - DefaultJmsListenerContainerFactory与DefaultMessageListenerContainer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33406925/