Обработка взаимодействия с большой базой данных в спящем режиме - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть база кода, где слушатель взаимодействует с базой данных MySql, этот слушатель получает огромное количество записей из очереди (ActiveMQ), которые должны храниться в базе данных.

Проблема заключается в том, что большие наборы данных должны быть введены в исключение бросков спящего режима базы данных: -

org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection

Кто-нибудь сталкивался с такой же проблемой ?! Я попытался синхронизировать метод, который находится в Слушателе, но когда я это делаю, Сообщения из очереди застряли.

Это трассировка стека: -

at org.springframework.jms.listener.DefaultMessageListenerContainer.receiveAndExecute(DefaultMessageListenerContainer.java:493)
11:42:59,330 ERROR [stderr] (crmMessageListenerContainer-4)     at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:904)
11:42:59,332 ERROR [stderr] (crmMessageListenerContainer-4)     at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:857)
11:42:59,334 ERROR [stderr] (crmMessageListenerContainer-4)     at org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:203)
11:42:59,336 ERROR [stderr] (crmMessageListenerContainer-4)     at java.lang.Thread.run(Thread.java:748)
11:42:59,337 ERROR [stderr] (crmMessageListenerContainer-4) Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/omoto
11:42:59,338 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137)
11:42:59,339 ERROR [stderr] (crmMessageListenerContainer-4)     at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
11:42:59,341 ERROR [stderr] (crmMessageListenerContainer-4)     at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
11:42:59,342 ERROR [stderr] (crmMessageListenerContainer-4)     ... 28 more
11:42:59,343 ERROR [stderr] (crmMessageListenerContainer-4) Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/omoto
11:42:59,345 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:390)
11:42:59,346 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
11:42:59,348 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)
11:42:59,350 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
11:42:59,352 ERROR [stderr] (crmMessageListenerContainer-4)     ... 30 more
11:42:59,352 ERROR [stderr] (crmMessageListenerContainer-4) Caused by: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
11:42:59,354 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:377)
11:42:59,356 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397)
11:42:59,357 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365)
11:42:59,359 ERROR [stderr] (crmMessageListenerContainer-4)     at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329)

Вот код конфигурации: -

hibernate.cfg.xml: -

<hibernate-configuration>
    <session-factory>
        <property name="c3p0.min_size">10</property>
        <property name="c3p0.max_size">20</property>
        <property name="c3p0.timeout">1800</property>
    </session-factory>
</hibernate-configuration>

persistance.xml: -

<property name="hibernate.c3p0.min_size"
                    value="5"/>
          <property name="hibernate.c3p0.max_size"
                    value="20"/>
          <property name="hibernate.c3p0.timeout"
                    value="300"/>
          <property name="hibernate.c3p0.max_statements"
                    value="50"/>
          <property name="hibernate.c3p0.idle_test_period"
                    value="3000"/>
...