【问题标题】:Limit JMS connections created by Spring JmsListener限制 Spring JmsListener 创建的 JMS 连接
【发布时间】:2021-04-01 16:11:06
【问题描述】:

我的应用程序中总共定义了 4 个JmsListener。我正在使用DefaultMessageListenerContainerFactory 并将并发设置为25-75。我看到我的应用程序正在创建大量 JMS 连接并耗尽限制。有什么方法可以限制这种连接吗?

JmsListenerContainerFactory<DefaultMessageListenerContainer> createJmsListenerContainerFactory(
        ConnectionFactory cf,DefaultJmsListenerContainerFactoryConfigurer configurer) {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, cf);
    factory.setSessionTransacted(true);
    factory.setSessionAcknowledgeMode(2);
    factory.setBackOff(new FixedBackOff());
    return factory; 
} 

这是我在监听器中的使用方式。

@Bean(name = "containerFactory")
public MQConnectionFactory mqConnectionFactory(DefaultJmsListenerContainerFactoryConfigurer configurer) throws NamingException {
    //call to createJmsListenerContainerFactory()
}
   
@JmsListener(destination = "queue1", containerFactory = "containerFactory", concurrency = "25-75")

我的 6 个应用程序实例正在运行。我需要限制每个实例的 JMS 连接限制。

【问题讨论】:

    标签: java spring-jms


    【解决方案1】:

    将您的连接工厂包装在 SingleConnectionFactory 中,它们将共享相同的连接。

    【讨论】:

    • 感谢加里。有没有办法在创建连接时在日志中打印一些东西?侦听器侦听器如何决定创建新连接?我看到单个实例建立了 30-40 个连接,这令人惊讶。
    • 如我所说,不要直接使用IBM工厂,将其包裹在SingleConnectionFactory中并在容器工厂中使用。
    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2017-11-24
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多