2016-02-11 226 views
0

我想写一个帮助函数,将允许我的仪表板检查是否MongoDB运行不。根据结果​​,它可能会在可视化仪表板上警告管理员。我通读了反应式mongo文档here,到目前为止我有以下功能,但不幸的是它不工作。如何检查MongoDB是否启动并运行使用reactivemongo

import reactivemongo.api.MongoDriver 

def isMongoUp(host: String): Boolean = { 

    var connected = false 
    val driver = new MongoDriver() 
    val connection = driver.connection(List(host)) 
    val db = connection("myDB") 
    db.map { 
    case Failure(e) => connected = false 
    case Success(result) => connected = true 
    } 

} 

更新1:

def isMongoUp(host: String): Boolean = { 
    var connected = false 
    val driver = new MongoDriver() 
    val connection = driver.connection(List(host)) 
    val db = connection.database("myDB") 
    db.map { 
    case sth:DefaultDB => connected = true 
    case _ => connected = false 
    } 
    connected 

} 

val result = isMongoUp("localhost") 
result 
+1

使用'connection.database(..)',而不是'连接(..)',这将等到DB解决(根据故障切换策略)。 – cchantep

+0

@cchantep:我做了这些改变,但是我的结果总是返回false。请参阅我的更新1 – summerNight

+1

您无法在'.database'结果上匹配,这是未来。 – cchantep

回答

-1

我把它做了这样:

def isMongoUp(host: String): Boolean = { 

    val driver = new MongoDriver() 
    val connection = driver.connection(List(host)) 
    val db = connection.database("myDB") 
    val connectedFuture: Future[Boolean] = db.map { list => 
     list match { 
     case sth: DefaultDB => true 
     case _ => false 
     } 
    }.recover { case error: Throwable => false} 
    val timeout = scala.concurrent.duration.Duration(5, "seconds") 

    val result = Await.result(connectedFuture, timeout) 
    result 

    } 
+0

未来的pat-mat是无用的。 – cchantep

相关问题