Как исправить SSLHandshakeFailed в ReactiveMongo для подключения атласа MongoDB? - PullRequest
0 голосов
/ 22 ноября 2018

как исправить приведенное ниже исключение Ошибка при получении запроса от клиента: SSLHandshakeFailed: сервер настроен на разрешение только SSL-соединений.

Мой код

    object GetStarted {
  val mongoUri = "mongodb://reddy:<password>@cluster0-shard-00-00-4u9oj.mongodb.net:27017,cluster0-shard-00-01-4u9oj.mongodb.net:27017,cluster0-shard-00-02-4u9oj.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true"

  import ExecutionContext.Implicits.global // use any appropriate context

  val driver = MongoDriver()
  val parsedUri = MongoConnection.parseURI(mongoUri)
  val connection = parsedUri.map(driver.connection(_))

  val futureConnection = Future.fromTry(connection)

  def db1: Future[DefaultDB] = futureConnection.flatMap(_.database("agshift"))

  def personCollection: Future[BSONCollection] = db1.map(_.collection("agshift_version"))

  println(" futureConnection " + futureConnection)

  implicit def personWriter: BSONDocumentWriter[Person] = Macros.writer[Person]

  import scala.concurrent.duration._

  def createPerson(): Either[Future[Unit], String] = {
    try {
      Left(personCollection.flatMap(_.insert(BSONDocument("1c" -> "1x")).map(_ => {}))) // use personWriter)
    } catch {
      case e: Exception =>
        println(" createPerson ======== " + e.toString)
        Right(e.toString)
    }
  }

  val test2 = findCount().onComplete {
    case Failure(e) => println("    test2    Exception " + e.toString)
    case Success(writeResult) => {
      println(s"successfully inserted document: $writeResult")
    }
  }

  def findCount(): Future[Either[Int, String]] = {
    try {
      val resp = personCollection.flatMap(_.count(Some(BSONDocument("agsky" -> "1.0.112"))).map(i => i))
      println(" test :::: " + Await.result(resp, 40 seconds))
      Future(Left(Await.result(resp, 40 seconds))) // use personWriter))
    } catch {
      case e: Exception =>
        println(" findPerson ======== " + e.toString)
        Future(Right(e.toString))
    }
  }

  implicit def personReader: BSONDocumentReader[Person] = Macros.reader[Person]

  case class Person(firstName: String, lastName: String, age: Int)

}

Я использовал приведенный выше код для подключения к атласу MongoDB и получаю SSLHandshakeFailed .Как я могу справиться с этим?

...