Пружинное повторное подключение, пока источник данных не станет доступным - PullRequest
0 голосов
/ 27 мая 2018

У меня есть настройка docker-compose для запуска моего приложения SpringBoot и базы данных MySQL.Если база данных запускается первой, мое приложение может успешно подключиться.Но если мое приложение запускается первым, база данных еще не существует, поэтому приложение выдает следующее исключение и завершает работу:

app_1       | 2018-05-27 14:15:03.415  INFO 1 --- [           main]
com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
app_1       | 2018-05-27 14:15:06.770 ERROR 1 --- [           main]
com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization
app_1       | com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure

Я мог бы отредактировать файл docker-compose, чтобы убедиться, что база данных всегда активна до приложениязапускается, но я хочу, чтобы приложение могло обрабатывать этот случай самостоятельно и не сразу завершать работу, когда не может достичь адреса базы данных.

Существуют способы настройки источника данных в файле application.propertiesчтобы приложение снова подключилось к базе данных, как ответили здесь и здесь .Но это не работает при загрузочном соединении с источником данных.

Как я могу заставить мое приложение SpringBoot повторять соединение при запуске с базой данных через заданный интервал до тех пор, пока оно успешно не соединится с базой данных?

Ответы [ 2 ]

0 голосов
/ 24 июля 2019

Вы также можете установить depends_on для своего сервиса в docker-compose.yaml

Это будет выглядеть так: (Я знаю, что это не HikariDataSource, но, возможно, это поможет в любом случае)

version: '3.7'

services:
  mongodbservice:
      image: mongo:latest

  backend:
    depends_on:
      - mongodbservice

В этом примере серверная часть будет запущена, если доступна служба mongodbservice:)

0 голосов
/ 27 мая 2018

Установите для свойства initializationFailTimeout HikariCP значение 0 (ноль) или отрицательное число.Как задокументировано здесь .

...