Приложение casign драйвера datastax должно быть "зомби" и не выходить - PullRequest
0 голосов
/ 16 января 2019

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

Например, здесь:

object ZombieTest extends App {
  val session= Cluster.builder().addContactPoint("localhost").build().connect()
// app doesn't exit unless doing:
session.getCluster.close() // won't exit unless this is called
}

1 Ответ

0 голосов
/ 16 января 2019

В слегка предвзятом ответе вы могли бы взглянуть на https://github.com/outworkers/phantom вместо использования стандартного драйвера java.

  • Вы получаете scala.concurrent.Future, monix.eval.Task или даже com.twitter.util.Future из запроса автоматически. Вы можете выбирать между всеми тремя.
  • Пулы соединений с БД лучше изолированы внутри уровней абстракции ContactPoint и Database, в которых есть shutdown методы, которые можно легко подключить к жизненному циклу приложения.
  • Это намного быстрее, чем драйвер Java, поскольку сериализация и десериализация типов выполняется во время компиляции с помощью более совершенных механизмов макросов.

Краткий ответ: у вас должен быть жизненный цикл вызова session.close или session.closeAsync, когда вы отключаете все остальное, это как он предназначен для работы.

...