我创建了几个spring 4.1.6 @JmsListener方法,用于从队列接收消息。我想获取管理员名称的监听器名称列表:
@JmsListener(
destination = "${jms.destination.name}"
, containerFactory = "myJmsContainerFactory"
, id ="myListener")
public void receiveMessage(String message) {
System.out.println("Received <" + message + ">");
}
我希望显示监听器的id / name以用于管理目的。我可以使用JmsListenerEndpointRegistry停止并启动监听器,但无法查看如何获取特定侦听器的名称。
JmsListenerEndpointRegistry registry = context.getBean(org.springframework.jms.config.JmsListenerEndpointRegistry.class);
Collection<MessageListenerContainer> listeners = registry.getListenerContainers();
MessageListenerContainer mlc = registry.getListenerContainer("myListener");
System.out.println("Running" + mlc.isRunning());
mlc.stop();
在调试中,Collection可以看作是Collections $ UnmodifiableCollection,其LinkedHashMap具有侦听器id,在本例中为myListener,作为LinkedHashMap的键值
答案 0 :(得分:1)
这个问题很老了,但我这样解决了:
Set<String> listenerContainerIds = registry.getListenerContainerIds();
for (String id : listenerContainerIds) {
MessageListenerContainer listenerContainer = registry.getListenerContainer(id);
...
}
我通过getListenerContainerIds获得了对MessageListenerContainer的引用,我得到了引用ID的名称。
希望这会有所帮助......