「Apache Groovy」- 编写 retry 函数 @20210426
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了「Apache Groovy」- 编写 retry 函数 @20210426,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1020字,纯文字阅读大概需要2分钟。
内容图文
问题描述
在 Jenkins Pipeline 中,通过 retry 函数,能够对某个操作重复进行,直到成功。尤其是在网络请求中,我们更应该使用 retry 函数,以防止服务器负载过高而产生的临时失败。
但是,Jenkins Pipeline 的执行速度“较慢”(这是 Jenkins 的优化,防治对服务器产生过大压力),并且会大量产生 Pipeline Step 执行日志,因此我们希望通过 Groovy 实现 retry 函数,并加入一些特性。
该笔记将记录:在 Apache Groovy 中,如何实现自定义的 retry 函数,以及相关问题处理。
解决方案
代码 retry() 示例
def retry(int times = 5, Closure errorHandler = {e-> e.printStackTrace()}, Closure body) { int retries = -1 while(times < 0 || ++retries <= times) { try { return body.call() } catch(e) { errorHandler.call(e) } } throw new Exception("Failed after $times retries!") }
这里的代码也许写的比较罗嗦,我们是为了赋予三个区间含义:
1)如果重试次数小于零,将无限重试;
2)如果重试次数等于零,将执行一次(而不重试)。
3)如果重试次数大于零,将执行 times + 1 次(即重试 times 次)
使用示例
retry(3) { errorProneOperation() } retry(2, {e-> e.printStackTrace()}) { errorProneOperation() }
相关文章
「Groovy」- 找到调用该方法的类
「Groovy」- 将对象保存到文件,以及读取文件中对象
参考文献
java - Retry after Exception in Groovy - Stack Overflow
Pipeline: Basic Steps/retry
原文:https://www.cnblogs.com/k4nz/p/14705921.html
内容总结
以上是互联网集市为您收集整理的「Apache Groovy」- 编写 retry 函数 @20210426全部内容,希望文章能够帮你解决「Apache Groovy」- 编写 retry 函数 @20210426所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。