ConnectionPool:池为空-增加maxPoolSize或借款ConnectionTimeout

问题描述 投票:0回答:1

我在连接到数据库和MQ并使用Atomikos事务管理器的springboot应用程序中遇到此问题。

com.atomikos.jms.AtomikosJMSException|Connection pool exhausted - try increasing 'maxPoolSize' and/or 'borrowConnectionTimeout' on the AtomikosConnectionFactoryBean.
com.atomikos.datasource.pool.PoolExhaustedException: ConnectionPool: pool is empty - increase either maxPoolSize or borrowConnectionTimeout
    at com.atomikos.datasource.pool.ConnectionPool.waitForAtLeastOneAvailableConnection(ConnectionPool.java:326)
    at com.atomikos.datasource.pool.ConnectionPool.findOrWaitForAnAvailableConnection(ConnectionPool.java:144)
    at com.atomikos.datasource.pool.ConnectionPool.borrowConnection(ConnectionPool.java:132)
    at com.atomikos.datasource.pool.ConnectionPoolWithSynchronizedValidation.borrowConnection(ConnectionPoolWithSynchronizedValidation.java:23)
    at com.atomikos.jms.AtomikosConnectionFactoryBean.createConnection(AtomikosConnectionFactoryBean.java:601)
    at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.access$100(AbstractPollingMessageListenerContainer.java:77)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer$MessageListenerContainerResourceFactory.createConnection(AbstractPollingMessageListenerContainer.java:490)
    at org.springframework.jms.connection.ConnectionFactoryUtils.doGetTransactionalSession(ConnectionFactoryUtils.java:325)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:281)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:245)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1189)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1179)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1076)
    at java.lang.Thread.run(Thread.java:748)

我尝试打印maxPoolSize并发现它是1。此页面介于(https://www.atomikos.com/Documentation/ConfiguringJms)之间,我发现他们将MaxPoolSize增大到5。我只是尝试将其设置为2并起作用。] >

AtomikosConnectionFactoryBean xaConnectionFactory = new AtomikosConnectionFactoryBean();
        xaConnectionFactory.setXaConnectionFactory(ibmMQXAConnectionFactory);
        xaConnectionFactory.setMaxPoolSize(2);

有人可以帮我了解理想的池大小吗?它是做什么的?

我在连接到数据库和MQ并使用Atomikos事务管理器的springboot应用程序中遇到此问题。 com.atomikos.jms.AtomikosJMSException |连接池用尽-尝试...

spring-boot jms connection-pooling jta atomikos
1个回答
0
投票

为了处理消息,Atomikos使用DB和JMS连接(在您的情况下)。这些连接来自可用连接池。要了解为什么需要连接池,请按照以下链接作为起点-Connection_pool

© www.soinside.com 2019 - 2024. All rights reserved.