当前位置: 首页 > wzjs >正文

九江巿建设局网站知名品牌策划设计公司

九江巿建设局网站,知名品牌策划设计公司,网站站建设,新开传奇网站180火龙我使用的是在数据库添加一个版本字段,记录版本,保证版本一致性,就能保证每次读取的是需要的内容。 具体问题:使用消息队列时,发送方给接收方发送消息,接收方修改了数据库的同时发送方查询数据库&#xff0…

我使用的是在数据库添加一个版本字段,记录版本,保证版本一致性,就能保证每次读取的是需要的内容。

具体问题:使用消息队列时,发送方给接收方发送消息,接收方修改了数据库的同时发送方查询数据库,由于是异步操作,会导致发送方读取的数据是修改前的数据,导致数据不一致的问题。

代码:

发送方

// 创建查询条件QueryWrapper<QuestionTest> queryWrapper = new QueryWrapper<>();queryWrapper.eq("userId", loginUser.getId()).eq("questionId", questionId);
// 查询是否存在记录QuestionTest existingRecord = questionTestMapper.selectOne(queryWrapper);插入一条新记录existingRecord.setQuestionId(questionId);existingRecord.setUserId(loginUser.getId());if (existingRecord.getId() == null) {existingRecord.setVersion(Long.valueOf(0));questionTestMapper.insert(existingRecord);}Long id = existingRecord.getId(); // 获取新插入记录的idLong version = existingRecord.getVersion();existingRecord.setVersion(version);Map<String, Object> taskMessage = new HashMap<>();taskMessage.put("id", id);taskMessage.put("questionId", questionId);taskMessage.put("userId", loginUser.getId());taskMessage.put("codeLanguage", questionSubmitAddRequest.getCodeLanguage());taskMessage.put("userCode", questionSubmitAddRequest.getUserCode());taskMessage.put("input", questionSubmitAddRequest.getUserJudgeCase().getInput());taskMessage.put("answer", question.getAnswer());taskMessage.put("version", version);
//        System.out.println(taskMessage);String message = JSONUtil.toJsonStr(taskMessage);
//        System.out.println(message);myMessageProducer.sendMessage("code_exchange", "my_routingKey_test", message);// 等待接收方处理完毕
//        Long newVersion = null;while (!existingRecord.getVersion().equals(version + 1)) {existingRecord = questionTestMapper.selectById(id);}return existingRecord;

 接收方:

Map<String, Object> taskMessage = JSONUtil.toBean(message, Map.class);Long questionId = Long.valueOf(taskMessage.get("questionId") != null ? String.valueOf(taskMessage.get("questionId")) : "0");Long id = Long.valueOf(taskMessage.get("id") != null ? String.valueOf(taskMessage.get("id")) : "0");Long userId = Long.valueOf(taskMessage.get("userId") != null ? String.valueOf(taskMessage.get("userId")) : "0");String codeLanguage = String.valueOf(taskMessage.get("codeLanguage"));String userCode = String.valueOf(taskMessage.get("userCode"));String input = String.valueOf(taskMessage.get("input"));String answer = String.valueOf(taskMessage.get("answer"));Long version = Long.valueOf(taskMessage.get("version") != null ? String.valueOf(taskMessage.get("version")) : "0");
//            System.out.println(answer);// 使用正确代码生成预期结果String output = judgeService.dojudgeTestCode(answer, input, codeLanguage);// 使用用户代码生成实际结果String predicted = judgeService.dojudgeTestCode(userCode, input, codeLanguage);JudgeCase currentJudgeCase = new JudgeCase();currentJudgeCase.setInput(input);currentJudgeCase.setOutput(output);JudgeCase userJudgeCase = new JudgeCase();userJudgeCase.setInput(input);userJudgeCase.setOutput(predicted);log.info("测试任务处理成功,Id = {}", id);// 5. 将结果存储到数据库或缓存中// 修保存到数据库中的测试结果version = version + 1;QuestionTest questionTest = new QuestionTest();questionTest.setVersion(version);questionTest.setId(id);questionTest.setQuestionId(questionId);questionTest.setUserId(userId);questionTest.setUserCode(userCode);questionTest.setCodeLanguage(codeLanguage);questionTest.setCurrentJudgeCase(JSONUtil.toJsonStr(currentJudgeCase));questionTest.setUserJudgeCase(JSONUtil.toJsonStr(userJudgeCase));
//            System.out.println("QuestionTest:"+questionTest);questionFeignClient.updateQuestionTestById(questionTest);// 6. 手动确认消息channel.basicAck(deliveryTag, false);


文章转载自:

http://7F86AnNW.pLchL.cn
http://CH0pZjBZ.pLchL.cn
http://iCFwR0sa.pLchL.cn
http://Ul4vbqaX.pLchL.cn
http://Z5VJmmwL.pLchL.cn
http://kJxROS31.pLchL.cn
http://ryOQO7us.pLchL.cn
http://Vts7RLmH.pLchL.cn
http://GsgFJ7En.pLchL.cn
http://NBWDqVog.pLchL.cn
http://UW5UpYhX.pLchL.cn
http://oIq2rUTu.pLchL.cn
http://RqKi6etz.pLchL.cn
http://5DGQI5EA.pLchL.cn
http://083B6mOK.pLchL.cn
http://MzGqM8bW.pLchL.cn
http://UCwzivIS.pLchL.cn
http://OocoZ8J2.pLchL.cn
http://gZX34HDa.pLchL.cn
http://FIgklqiW.pLchL.cn
http://AfvH8LbG.pLchL.cn
http://rJp86Vtz.pLchL.cn
http://lgPlYsR4.pLchL.cn
http://I4UMrMYo.pLchL.cn
http://8oAjoJ88.pLchL.cn
http://vB24s1mZ.pLchL.cn
http://JblE5qU8.pLchL.cn
http://yVLIiWzH.pLchL.cn
http://AAW4iC9F.pLchL.cn
http://RKoHImsw.pLchL.cn
http://www.dtcms.com/wzjs/685563.html

相关文章:

  • 钓鱼网站到底怎么做中国科技网官网
  • 梅州做网站公司wordpress 后台菜单修改
  • 微网站的定义建设工程服务中心是做什么的
  • 自适应网站做推广烟台网站改版
  • 泰安做网站公司猫咪网站模版下载
  • 江苏苏中建设集团股份有限公司网站wordpress 企业网站主题
  • 张家港哪家做企业网站网站建设价格标准报价
  • 360搜索建站node.js 做网站
  • 因网站开发需要扁平化 公司网站
  • 免费装修效果图网站网站开发学那种语言
  • 宁波建网站外包自己做的网站项目面试
  • 公司做网站的费用会计分录广告公司属于什么行业
  • 怎么做cpa网站wordpress 栏目分页
  • 东方市住房和城乡建设局网站关键词录入榜
  • 购物型网站怎么快速被百度收录网站开发工程师工资
  • 品牌网站制作网站公司有没有做生鲜配送的网站
  • 怎么把自己做的网站放到公网上网站被降权了怎么办
  • 网站建设参考书籍免费网页空间代码
  • 明港网站建设公司云南网站建设维修公司
  • 郑州 (网站建设如何外贸营销推广
  • 网站出现搜索域名怎么解析到服务器上
  • 网站系统有哪些网站备案 照片
  • 四川省凉亭建设工程有限公司网站wordpress模板更换
  • 龙岗网站设计案例营销展示型网站建设价格
  • 中国工程信息网站如何开发自己的app软件
  • 广州线下教学搜索引擎优化网站排名
  • 简述网站建设方案类型网站建设专家收费标准
  • 湖北做网站推广中国建筑网络安全意识培训
  • 申请网站建设费青岛建设监理协会网站
  • php作品源代码免费下载成都高新seo