2017-03-10 108 views
0

我有以下問題:
1.我安裝了使用MongoDB數據庫的spring啓動應用程序。
2.我在本地測試它,它工作 - 應用程序正確連接到數據庫。
3.我將spring引導應用程序部署到天青,但應用程序無法連接到MongoDB數據庫。我得到異常下面:Spring Boot,MongoDB連接超時

「後30000毫秒超時等待匹配ReadPreferenceServerSelector服務器{readPreference =初級}簇狀態的客戶端的觀點是{式=未知,服務器= [{地址= appexpirer。 documents.azure.com:10250,type = UNKNOWN,state = CONNECTING,exception = {com.mongodb.MongoSocketReadTimeoutException:接收消息時超時},由{java.net.SocketTimeoutException:Read timed out}造成}}];嵌套異常是com.mongodb.MongoTimeoutException: 在等待與ReadPreferenceServerSelector {readPreference = primary}匹配的服務器30000 ms後超時。集羣狀態的客戶端視圖是{type = UNKNOWN,servers = [{address = appexpirer.documents.azure.com :10250,type = UNKNOWN,state = CONNECTING,exception = {com.mongodb.MongoSocketRead TimeoutException異常:超時而接收消息},由{java.net.SocketTimeoutException:讀超時}}]」

我相信我的application.properties正確配置:

spring.data .mongodb.uri = MongoDB的://用戶名:密碼@主機:端口/ SSL的databaseName =真& sslInvalidHostNameAllowed =真
server.ssl.enabled =真
server.ssl.enabled的協議=真

但我不確定 - 請你指教我有什麼問題嗎?

如果我使用Robomongo工具進行連接,everyting可以很好地工作。 我使用Java 8 - 可以解決問題嗎?

+0

啓動應用程序如何部署到天藍色?是否有任何可能阻止對DocumentDb端點的出站訪問? – kgu87

+0

我通過git部署了app.jar文件和web.config文件。我想知道它是否可以成爲ssl的問題,因爲我沒有在Azure上的應用程序服務上配置ssl,並且MongoDB需要SSL連接 - 您是否遇到過這種情況? – lwalukie

+0

我可以擊中你的錯誤從我的機器啓動時顯示的mongo端點。它顯示驗證錯誤(明顯),所以看起來連接問題不是針對mongo端點,而是來自您的啓動應用程序所在的位置。 – kgu87

回答

0

你打開了從應用服務器到數據庫(Mongo)服務器的連接嗎?這個錯誤聽起來像一個防火牆,只是丟棄請求數據包。

像Azure和AWS這樣的服務,一切都非常緊密。您通常必須明確地打開或允許您要使用的每個連接點。

+0

你是什麼意思 - 「你打開了從應用服務器到數據庫(Mongo)服務器的連接」?我有安裝應用程序服務和數據庫服務器。兩者都在Azure上進行安裝和託管。我應該以某種方式在Azure上建立這兩者之間的連接?我可以從Robomongo連接到數據庫,但不能從應用程序服務(總是獲取時間戳)。 – lwalukie