Mongodb 更新失敗解決方案

來源:互聯網
上載者:User

現象:

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);                        }                    }                });

如此失敗率,大大減少。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.