问题: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" />