MongoDB更新失败怎么办,如何才能减少失败
Admin 2022-05-27 群英技术资讯 1447 次浏览
这篇文章主要讲解了“MongoDB更新失败怎么办,如何才能减少失败”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB更新失败怎么办,如何才能减少失败”吧!
现象:
WriteResult res = mongoTemplate.updateFirst(query, updateObj, "ServerToAgentReq_SMS");
获取res.getN()返回值时,发现偶尔情况下该返回值为0,表示该更新操作没有更新到任何数据。并且如果是多线程并发更新,失败几率大大提高。
官网表示不能保证更新操作的成功性....
方案:
一次失败后,另起线程多次重试。
private ThreadPoolExecutor exec = new ThreadPoolExecutor(2, 10, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10), new ThreadPoolExecutor.CallerRunsPolicy());
主要代码:
WriteResult res = mongoTemplate.updateFirst(query, updateObj, "ServerToAgentReq_SMS");
//如果更新失败,进入其他线程重试更新
if (res.getN() == 0) {
exec.execute(new Runnable() {
@Override
public void run() {
int num = 0;
WriteResult res = mongoTemplate.updateFirst(query, updateObj, "ServerToAgentReq_SMS");
while (res.getN() == 0 && num < 100) {
res = mongoTemplate.updateFirst(query, updateObj, "ServerToAgentReq_SMS");
num++;
try {
Thread.sleep(300);
} catch (InterruptedException e) {
logger.error("响应更新失败{}", e);
}
}
if (res.getN() == 0) {
logger.error("响应更新失败!!!gwMsgId:{},masMsgId:{}", gwMsgId, masMsgId);
}
}
});
如此失败率,大大减少。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
linux下关闭mongodb服务的方法:首先进入shell;然后执行【db.shutdownServer()】命令即可关闭mongodb服务。如果我们要启动mongodb服务可以执行【./mongod】命令。
MongoDB 自动增长 MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识。 但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。 由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长。 使用 counters 集合 考虑以下 products 文档。我们希望 _id 字..
mongodb可以跨平台。MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。
MongoDB PHP 扩展 本教程将向大家介绍如何在Linux、window、Mac平台上安装MongoDB扩展。 Linux 上安装 MongoDB PHP 扩展 在终端上安装 你可以在 Linux 中执行以下命令来安装 MongoDB 的 PHP 扩展驱动 $ sudo pecl install mongodb 使用php的pecl安装命令必须保证网络连接可用以及root权限。 安装手册 如果你想通过源码来编译扩展驱动。你..
MongoDB进行查询文档操作实例是怎样的?今天来给大家介绍下关于MongoDB查询文档操作过程内容,如果你对这方面感兴趣的话不妨看看小编所整理的资料,希望能在工作中帮助到你。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008