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

网站网站建设公司贵阳网站设计阳光创信好吗

网站网站建设公司,贵阳网站设计阳光创信好吗,商城网站大全,苏州市住房建设局网站mongodb启动不能锁定在我以前的文章中#xff0c;我谈到了对MongoDB批处理程序采用乐观锁定的好处。 如我之前所写#xff0c;乐观锁定异常是可恢复的异常#xff0c;只要我们获取最新的Entity#xff0c;我们就会对其进行更新并保存。 因为我们使用的是MongoDB#xff0… mongodb启动不能锁定 在我以前的文章中我谈到了对MongoDB批处理程序采用乐观锁定的好处。 如我之前所写乐观锁定异常是可恢复的异常只要我们获取最新的Entity我们就会对其进行更新并保存。 因为我们使用的是MongoDB所以我们不必担心本地或XA事务。 在以后的文章中我将演示如何在使用JPA时构建相同的机制。 Spring框架提供了很好的AOP支持因此可以轻松实现自动重试机制这就是我做到的方式。 我们首先定义一个Retry注释 Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface Retry {Class? extends Exception[] on();int times() default 1; } 我们注释了我们的业务逻辑方法例如 Retry(times 10, on org.springframework.dao.OptimisticLockingFailureException.class) public Product updateName(Long id, String name) {Product product productRepository.findOne(id);product.setName(name);LOGGER.info(Updating product {} name to {}, product, name);return productRepository.save(product); } 然后我们只需要AOP方面来拦截业务逻辑调用并在乐观锁定检测的情况下重试。 Aspect public class OptimisticConcurrencyControlAspect {private static final Logger LOGGER LoggerFactory.getLogger(OptimisticConcurrencyControlAspect.class);Around(annotation(vladmihalcea.concurrent.Retry))public Object retry(ProceedingJoinPoint pjp) throws Throwable {Retry retryAnnotation getRetryAnnotation(pjp);return (retryAnnotation ! null) ? proceed(pjp, retryAnnotation) : proceed(pjp);}private Object proceed(ProceedingJoinPoint pjp) throws Throwable {return pjp.proceed();}private Object proceed(ProceedingJoinPoint pjp, Retry retryAnnotation) throws Throwable {int times retryAnnotation.times();Class? extends Throwable[] retryOn retryAnnotation.on();Assert.isTrue(times 0, Retry{times} should be greater than 0!);Assert.isTrue(retryOn.length 0, Retry{on} should have at least one Throwable!);LOGGER.info(Proceed with {} retries on {}, times, Arrays.toString(retryOn));return tryProceeding(pjp, times, retryOn);}private Object tryProceeding(ProceedingJoinPoint pjp, int times, Class? extends Throwable[] retryOn) throws Throwable {try {return proceed(pjp);} catch (Throwable throwable) {if(isRetryThrowable(throwable, retryOn) times-- 0) {LOGGER.info(Optimistic locking detected, {} remaining retries on {}, times, Arrays.toString(retryOn));return tryProceeding(pjp, times, retryOn);}throw throwable;}}private boolean isRetryThrowable(Throwable throwable, Class? extends Throwable[] retryOn) {Throwable[] causes ExceptionUtils.getThrowables(throwable);for(Throwable cause : causes) {for(Class? extends Throwable retryThrowable : retryOn) {if(retryThrowable.isAssignableFrom(cause.getClass())) {return true;}}}return false;}private Retry getRetryAnnotation(ProceedingJoinPoint pjp) throws NoSuchMethodException {MethodSignature signature (MethodSignature) pjp.getSignature();Method method signature.getMethod();Retry retryAnnotation AnnotationUtils.findAnnotation(method, Retry.class);if(retryAnnotation ! null) {return retryAnnotation;}Class[] argClasses new Class[pjp.getArgs().length];for (int i 0; i pjp.getArgs().length; i) {argClasses[i] pjp.getArgs()[i].getClass();}method pjp.getTarget().getClass().getMethod(pjp.getSignature().getName(), argClasses);return AnnotationUtils.findAnnotation(method, Retry.class);} } 该测试开始10个竞标以竞争产品的保存这就是测试日志。 Line 492: INFO [Thread-9]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 495: INFO [Thread-3]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 504: INFO [Thread-8]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 505: INFO [Thread-11]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 507: INFO [Thread-10]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 513: INFO [Thread-5]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 523: INFO [Thread-4]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 9 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 529: INFO [Thread-3]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 8 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 586: INFO [Thread-10]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 8 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 682: INFO [Thread-5]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 8 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 683: INFO [Thread-3]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 7 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 686: INFO [Thread-8]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 8 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 702: INFO [Thread-3]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 6 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 752: INFO [Thread-5]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 7 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 756: INFO [Thread-8]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 7 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException]Line 859: INFO [Thread-5]: v.c.a.OptimisticConcurrencyControlAspect - Optimistic locking detected, 6 remaining retries on [class org.springframework.dao.OptimisticLockingFailureException] 代码可在GitHub上获得 。 参考 Vlad Mihalcea博客博客上的JCG合作伙伴 Vlad Mihalcea 对MongoDB进行了乐观锁定重试 。 翻译自: https://www.javacodegeeks.com/2013/11/optimistic-locking-retry-with-mongodb.htmlmongodb启动不能锁定
http://www.zqtcl.cn/news/629717/

相关文章:

  • 网站广告投放收费标准长沙公司制作网站费用
  • 网站建设有哪些环节做一个产品网站要多少钱
  • 公司网站建设价格河北网站制作 网站开发
  • 适合新手做的网站项目职业技术培训
  • 提高网站流量原则昆山做百度网站
  • 怎样设计自己的网站长春制作门户网站的公司
  • 亚马逊商标备案是否必须做网站Wordpress做APP后端
  • 主办单位性质与网站名称不符网站域名怎么买
  • 帝国cms下载类网站怎么做广州外贸营销网站建设公司
  • 网站开发软件开发流程免费做外贸的网站平台有哪些
  • 教育培训网站开发广告公司怎么设置网站关键字
  • 绩溪建设银行网站济南网站建设 刘彬彬
  • 网站开发是打代码吗建网站来做什么
  • 制作网站需要什么软件wordpress建站程序
  • 做网站网站怎么赚钱软件工程师证书报考时间
  • 手机和电脑网站分开做炒股软件下载
  • 网站建设需要注意哪些关键细节杭州做商务网站
  • 做网站,图片显示不出来网站图标代码
  • 理财网网站开发源码h5淘宝网网页版入口
  • 免费网站商城模板宁波企业网站搭建图片
  • 上海网站备案查询建站图标素材
  • 贵州省住房和建设厅网网站网站页面设计报告
  • 做网站友汇网快速建设网站视频教程
  • 物流公司做网站注重什么官网的网站设计公司
  • 网站备案 2016电子商务平台起名
  • 济南建站详情房地产市场分析
  • 南宁品牌网站建设公司中国商业企业网
  • 建设招标网官方网站电脑版做系统简单还是网站简单
  • 网站平台建设总结品牌网页
  • 网站建设如何就接入支付宝企业云平台