mongodb寫操做無響應

問題:mongodb寫操做無響應,致使程序一直等待沒法往下運行,無異常拋出。mongodb

緣由:mongodb使用了集羣,其中主服務器掛掉,配置中WriteConcern拋出異常的級別是MAJORITY,主服務器無響應,致使寫操做一直等待主服務器的影響,不繼續執行或拋出異常。服務器

解決方案:修改WriteConcern拋出異常的級別,write-concern="SAFE"網絡

 

<mongo:mongo-client id="mongoClient" replica-set="${mongo.hostport}">spa

</mongo:mongo-client>日誌

<mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbName}" mongo-ref="mongoClient" />it

<!--WriteConcern的幾種拋出異常的級別參數:集羣

WriteConcern.NONE:沒有異常拋出cli

WriteConcern.NORMAL:僅拋出網絡錯誤異常,沒有服務器錯誤異常配置

WriteConcern.SAFE:拋出網絡錯誤異常、服務器錯誤異常;並等待服務器完成寫操做。(建議集羣時使用此參數)程序

WriteConcern.MAJORITY: 拋出網絡錯誤異常、服務器錯誤異常;並等待一個主服務器完成寫操做。(集羣時使用此參數,若是主服務器掛掉,則程序會一直等待主程序響應,致使程序沒法繼續運行)

WriteConcern.FSYNC_SAFE: 拋出網絡錯誤異常、服務器錯誤異常;寫操做等待服務器將數據刷新到磁盤。

WriteConcern.JOURNAL_SAFE:拋出網絡錯誤異常、服務器錯誤異常;寫操做等待服務器提交到磁盤的日誌文件。

WriteConcern.REPLICAS_SAFE:拋出網絡錯誤異常、服務器錯誤異常;等待至少2臺服務器完成寫操做。 -->

<mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory" write-concern="SAFE" />

相關文章
相關標籤/搜索