spring 如何在单个方法上为多个 @JmsListener 工作

问题描述

我想说明一下,如果我在一个方法上放置多个@jmsListener,那么它是如何工作的? 它是否会像多个单独的 JMS 侦听器一样并行工作? 或者它会像一个 JMS 侦听器一样按顺序工作?

喜欢:

    @JmsListener(destination = "queue.name1",containerFactory = "jmsListenerContainerFactory")
    @JmsListener(destination = "queue.name2",containerFactory = "jmsListenerContainerFactory")
    @JmsListener(destination = "queue.name3",containerFactory = "jmsListenerContainerFactory")
    @JmsListener(destination = "queue.name4",containerFactory = "jmsListenerContainerFactory")
    public void receiveQueue(Message message,Session session) throws JMSException {
        //Todo for message queue consuming logic
    }

我的问题是 spring 会生成 4 个单独的 JMS 侦听器并并行工作还是仅生成 1 个 JMS 侦听器并按顺序为 4 个不同的消息队列工作?

解决方法

每个 JmsListener 注释都会构建一个 JMS 侦听器容器,因此将有 4 个 JMS 侦听器并行工作。来自 JmsListener 注释的 JavaDoc:

将方法标记为指定目标上的 JMS 消息侦听器目标的注解()。 containerFactory() 标识用于构建 JMS 侦听器容器的 JmsListenerContainerFactory。