我使用spring-boot来配置jms和activemq连接。由于activemq的缺陷,我需要在PooledConnectionFactory上设置空闲超时。 spring-boot不会暴露此配置。我该如何设置?
我有一个@Bean来创建一个messageListenerContainer,它将connectionFactory作为参数。我可以检查工厂并在这里进行配置,但这似乎不是正确的方法。
答案 0 :(得分:0)
在我看来,向PooledConnectionFactory
向下倾斜并致电setIdleTimeout
是一种非常合理的做法。
如果您不想在创建消息侦听器容器时执行此操作,则可以在使用ConnectionFactory
的同时声明自己的ActiveMQProperties
bean。像这样:
@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;
}
}