Подключение Redshift от Spring занимает слишком много времени - PullRequest
0 голосов
/ 07 декабря 2018

Я столкнулся со странной проблемой, приложение Spring прослушивает ActiveMQ с использованием библиотеки Camel и выполняет некоторые операции с БД в базе данных Redshift.

В списке указан пользователь, который запустил транзакцию.

Когда появляется сообщениеПолучено, ActiveMQ инициирует транзакцию и отправляет прослушивателю Spring метод, аннотированный @Transactional.Этот метод использует соединение Redshift и выполняет некоторую операцию.

Я вижу, что сам вызов метода занимает очень много времени.У меня в качестве самого первого утверждения в методе есть запись журнала, и она выводится примерно через 15–20 минут после последнего вызова, вызывающего этот метод.

Ниже приведены журналы: (обратите внимание на время. Была предпринята попытка транзакции.в 22:42, но соединение может быть установлено только в 22:58)

2018-12-06 22:42:43.619 DEBUG 6 --- [xport.redshift]] o.s.j.d.DataSourceTransactionManager     : Creating new transaction with name [com.blss.retailServices.dataExportRouter.controllers.impl.RedShiftDataExportControllerImpl.exportSaleTransaction]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
...
...
2018-12-06 22:58:31.013 DEBUG 6 --- [xport.redshift]] o.s.j.d.DataSourceTransactionManager     : Acquired Connection [ProxyConnection[PooledConnection[org.postgresql.jdbc.PgConnection@13163c3c]]] for JDBC transaction
2018-12-06 22:58:31.017 DEBUG 6 --- [xport.redshift]] o.s.j.d.DataSourceTransactionManager     : Switching JDBC Connection [ProxyConnection[PooledConnection[org.postgresql.jdbc.PgConnection@13163c3c]]] to manual commit
2018-12-06 22:58:32.679 DEBUG 6 --- [xport.redshift]] o.s.j.d.DataSourceTransactionManager     : Initiating transaction commit
2018-12-06 22:58:32.679 DEBUG 6 --- [xport.redshift]] o.s.j.d.DataSourceTransactionManager     : Committing JDBC transaction on Connection [ProxyConnection[PooledConnection[org.postgresql.jdbc.PgConnection@13163c3c]]]
2018-12-06 22:58:33.200 DEBUG 6 --- [xport.redshift]] o.s.j.d.DataSourceTransactionManager     : Releasing JDBC Connection [ProxyConnection[PooledConnection[org.postgresql.jdbc.PgConnection@13163c3c]]] after transaction
2018-12-06 22:58:33.200 DEBUG 6 --- [xport.redshift]] o.s.jdbc.datasource.DataSourceUtils      : Returning JDBC Connection to DataSource

Что может вызвать эту проблему?

Я посмотрел на пул соединений с БД, и он имеет maxActive= 100, которое не должно быть исчерпано во время запуска БД и только одно сообщение в очереди.

...