2016-02-11 51 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

相關問題