我们可以在使用@JmsListener 机制时访问 getConcurrentConsumers 方法吗

Can we access getConcurrentConsumers method while using @JmsListener Mechanism

我正在使用@JmsListener 来使用队列中的消息。由于这需要 DefaultJmsListenerContainerFactory 作为连接工厂,我们可以将并发设置为

DefaultJmsListenerContainerFactory  factory = new DefaultJmsListenerContainerFactory ()
factory.setConcurrency("1-1");

问题是我们能否以编程方式获取并发消费者的数量?

就像我们使用 DefaultMessageListenerContainer 一样,我们可以使用 getConcurrentConsumers() 方法获取并发消费者,我们也可以设置使用方法 setConcurrentConsumers().

的消费者

我已经使用 JmsListenerEndPointRegistry 来获取对容器的引用并访问生命周期方法,如 start() 、 stop() 但是我们可以使用这个 regisrty 设置消费者吗?

或者是否有任何不同的方式可以让我们访问我的 DefaultMessageListenerContainer 提供的方法并使用基于注释的机制,即 @JmsListener?

您可以在 @JmsListener 本身上设置并发;它会覆盖工厂配置的任何内容。

    /**
     * The concurrency limits for the listener, if any. Overrides the value defined
     * by the container factory used to create the listener container.
     * <p>The concurrency limits can be a "lower-upper" String &mdash; for example,
     * "5-10" &mdash; or a simple upper limit String &mdash; for example, "10", in
     * which case the lower limit will be 1.
     * <p>Note that the underlying container may or may not support all features.
     * For instance, it may not be able to scale, in which case only the upper limit
     * is used.
     */
    String concurrency() default "";

您可以将侦听器容器从 regisgtry.getListenerContainer(id) 转换为 DefaultMessageListenerContainer 以调用 getConcurrentConsumers()