У меня есть программа, которая планирует задачу один раз в день.
Каждый день он получает данные из внешнего API и сохраняет результаты в моей базе данных. Я решил сделать это с актерами akka, используя Slick для подключения к моей базе данных.
Как работает сторона приложения "вставка базы данных":
- запросы на вставку данных адресованы субъекту «DatabaseInsertManager»
- для каждого входящего запроса этот менеджер создает дочерний «DatabaseInserter», который фактически выполняет вызов к базе данных, учитывая запрос, предоставленный менеджером
- когда запрос выполнен, вставщик умирает
Чтобы вызвать базу данных, у меня есть глобальная ссылка на объект Slick базы данных, который все эти DatabaseInserters используют. Мне интересно, если это правильный способ сделать это. Может ли эта глобальная ссылка умереть по какой-то причине?
Или лучше создать новый объект БД для каждого DatabaseInverter, который использует db.close()
в методе postStop
?
Последний вариант: я создаю объект db в начале ежедневного задания и закрываю его по завершении работы (обычно через 15 минут).
Мои гладкие зависимости
"com.typesafe.slick" %% "slick" % "3.2.3",
"com.typesafe.slick" %% "slick-hikaricp" % "3.2.3",