我已经创建了几个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/名称。我可以使用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();在debug中,可以将集合视为集合$UnmodifiableCollection,其LinkedHashMap将侦听器id (在本例中为myListener )作为LinkedHashMap的键值
发布于 2016-04-28 14:55:55
这个问题很老了,但我是这样解决的:
Set<String> listenerContainerIds = registry.getListenerContainerIds();
for (String id : listenerContainerIds) {
MessageListenerContainer listenerContainer = registry.getListenerContainer(id);
...
}我通过getListenerContainerIds获得了对MessageListenerContainer的引用,我得到了引用的ID的名称。
希望这能帮到你。
https://stackoverflow.com/questions/31237289
复制相似问题