【问题标题】:spring-boot configure non exposed propertiesspring-boot 配置非暴露属性
【发布时间】:2014-09-19 20:20:07
【问题描述】:

我正在使用 spring-boot 来配置 jms 和 activemq 连接。由于 activemq 的缺陷,我需要在 PooledConnectionFactory 上设置空闲超时。 spring-boot 不会公开此配置。如何设置?

我有一个@Bean 来创建一个以 connectionFactory 作为参数的 messageListenerContainer。我可以通过instanceof检查工厂并在这里进行配置,但这似乎不是正确的方法。

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    在我看来,向下转换到 PooledConnectionFactory 并调用 setIdleTimeout 是一种完全合理的方法。

    如果您不想将其作为创建消息侦听器容器的一部分,您可以声明自己的ConnectionFactory bean,同时仍使用ActiveMQProperties。像这样的:

    @Configuration
    @EnableConfigurationProperties(ActiveMQProperties.class)
    class CustomActiveMQConnectionFactoryConfiguration {
    
        @Autowired
        private ActiveMQProperties properties;
    
        @Bean
        public ConnectionFactory jmsConnectionFactory() {
            ConnectionFactory connectionFactory = this.properties.createConnectionFactory();
            if (connectionFactory instanceof PooledConnectionFactory) {
                ((PooledConnectionFactory) connectionFactory).setIdleTimeout(1000);
            }
            return connectionFactory;
        }
    }
    

    【讨论】:

    • 这就是我所追求的。我有相同的但错过了我的配置类上的 EnabledConfigurationProperties 注释。也许如果 PooledConnectionFactory 是使用 @Bean 创建的,那么它会更直接。
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2020-07-10
    • 2019-05-19
    • 2020-06-14
    • 1970-01-01
    • 2016-02-27
    • 2020-05-02
    • 2021-05-10
    相关资源
    最近更新 更多