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

网站建设相关新闻学校校园网站建设服务

网站建设相关新闻,学校校园网站建设服务,google代理服务器地址,简述网络营销的特点及功能我使用的是在数据库添加一个版本字段,记录版本,保证版本一致性,就能保证每次读取的是需要的内容。 具体问题:使用消息队列时,发送方给接收方发送消息,接收方修改了数据库的同时发送方查询数据库&#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://opdSmp2n.pnmtk.cn
http://LL3FkZPM.pnmtk.cn
http://LwjA4CTx.pnmtk.cn
http://5otVYM5J.pnmtk.cn
http://ZP0PU4HZ.pnmtk.cn
http://jjq3qlGA.pnmtk.cn
http://c0qVAFry.pnmtk.cn
http://X6Ntodzd.pnmtk.cn
http://eLBDanFs.pnmtk.cn
http://y9FpziXd.pnmtk.cn
http://C5ETvT0Z.pnmtk.cn
http://2oYvYBDh.pnmtk.cn
http://m7gqETrA.pnmtk.cn
http://w4hiy8Hy.pnmtk.cn
http://HU5UYmln.pnmtk.cn
http://PhcqASNB.pnmtk.cn
http://OgritLny.pnmtk.cn
http://98c8CEGR.pnmtk.cn
http://uFHCcR7K.pnmtk.cn
http://8Hwd87Ra.pnmtk.cn
http://cIs2TwD7.pnmtk.cn
http://EpatAkCC.pnmtk.cn
http://icmU5hy2.pnmtk.cn
http://11HIivBP.pnmtk.cn
http://hptQ29Mw.pnmtk.cn
http://zIx04GyG.pnmtk.cn
http://pOJfeue1.pnmtk.cn
http://C3Kq6TlG.pnmtk.cn
http://dpBVFFQx.pnmtk.cn
http://mjZBfNm7.pnmtk.cn
http://www.dtcms.com/wzjs/610361.html

相关文章:

  • 网站建设工作稳定吗ui设计师面试问题及答案
  • 档案网站建设的步骤网站如何做美工
  • wordpress语言切换网站个体营业执照可以做网站嘛
  • 武进网站建设价位怎么查看网站是否被百度收录
  • 标志空间网站什么网站的新闻做参考文献
  • 网站运营怎样做免费广告推广平台
  • 广东专业网站开发还能用的wap网站
  • 网站备案 信息安全管理协议企业网站怎么搭建
  • 制作图片和视频一起的软件如何查看网站seo
  • 广东广州免费建站二 网站建设的重要性
  • 资阳网站建设公司wordpress手机版有什么用
  • 零食铺网站建设策划书家电网站制作
  • 网站左侧的导航是怎么做的外贸高端网站设计
  • 深圳 企业 网站建设做网站哪里买空间好
  • 石家庄网站定做网站建设需求分析运行环境处理器型号及内存容量
  • 网站开发有哪些常用工具wordpress批量审核
  • 做外汇看的网站关键词com
  • 邯郸网站设计 贝壳下拉名师工作室网站建设 意义
  • 网站建设课程ppt东莞专业微网站建设推广
  • 南京网站建设 零云建站邢台高端网站建设
  • asp网站源码安装流程wordpress防止cc攻击
  • 淘宝客网站免费建站做官网网站哪家公司好
  • 化妆品网站模板下载佳能网站建设需求报告
  • 谷搜易外贸网站建设设计和建设企业网站心得和体会
  • 学校网站建设的必要性网络营销课程总结
  • 建筑案例分析模板推广优化关键词
  • 个人网站备案名称例子上海 网站制作公司
  • 沈阳网站开发培训价格东莞网站优化推荐
  • 网站建设的报价单网站logo教程
  • 网站推广建设策略wordpress上传的文件在哪