2015-07-06 10 views
1

Я создал несколько весенних 4.1.6 методов @JmsListener для приема сообщений из очередей. Я хотел бы получить список имен слушателя для администратора цели:Spring List Listener Names

@JmsListener(
     destination = "${jms.destination.name}" 
     , containerFactory = "myJmsContainerFactory" 
     , id ="myListener") 
    public void receiveMessage(String message) { 
     System.out.println("Received <" + message + ">"); 
    } 

, и я хочу, чтобы отобразить идентификатор/имя слушателей для целей администратора. Я могу остановить и запустить слушателей с помощью 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(); 

В отладить Коллекцию можно рассматривать как Collections $ UnmodifiableCollection с LinkedHashMap, который имеет слушателю идентификатор, myListener в этом случае, в качестве ключевого значения LinkedHashMap

ответ

1

Этот вопрос был довольно старый, но я решил это так:

Set<String> listenerContainerIds = registry.getListenerContainerIds(); 
for (String id : listenerContainerIds) { 
    MessageListenerContainer listenerContainer = registry.getListenerContainer(id); 
    ... 
} 

Я получил ссылку на MessageListenerContainer унд через getListenerContainerIds, я получил имя идентификатора в качестве ссылки.

Надеюсь, что это поможет ...

Смежные вопросы