首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring消息监听器名称

Spring消息监听器名称
EN

Stack Overflow用户
提问于 2015-07-06 11:15:31
回答 1查看 1.4K关注 0票数 1

我已经创建了几个spring 4.1.6 @JmsListener方法,用于从队列接收消息。我想要获取监听程序名称的列表,用于管理目的:

代码语言:javascript
复制
    @JmsListener(
        destination = "${jms.destination.name}"
        , containerFactory = "myJmsContainerFactory"
        , id ="myListener")
    public void receiveMessage(String message) {
        System.out.println("Received <" + message + ">");
    }

为了便于管理,我想显示监听器的id/名称。我可以使用JmsListenerEndpointRegistry停止和启动监听程序,但不知道如何获取特定监听程序的名称。

代码语言:javascript
复制
    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的键值

EN

回答 1

Stack Overflow用户

发布于 2016-04-28 14:55:55

这个问题很老了,但我是这样解决的:

代码语言:javascript
复制
Set<String> listenerContainerIds = registry.getListenerContainerIds();
for (String id : listenerContainerIds) {
    MessageListenerContainer listenerContainer = registry.getListenerContainer(id);
    ...
}

我通过getListenerContainerIds获得了对MessageListenerContainer的引用,我得到了引用的ID的名称。

希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31237289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档