通过实现ITimeoutWorker接口创建worker(worker执行代码为Thread.sleep(1000)),并设置enableTimeOut方法返回true,设置timeOut方法返回800毫秒,当执行worker的时候,依然可以正常执行成功,并没有因超时而执行失败
最早期版本是有单独的worker超时控制的,但是有问题,就是每一个监控,都需要额外开辟一个线程来监控他的超时。这样会导致线程数爆炸。后来专门删掉了,保留了组超时
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
最早期版本是有单独的worker超时控制的,但是有问题,就是每一个监控,都需要额外开辟一个线程来监控他的超时。这样会导致线程数爆炸。后来专门删掉了,保留了组超时
@tianyaleixiaowu 虽然组超时可以满足大部分的需求,并且针对单个worker设置超时会有线程爆炸的情况,但比如对一些关键接口或者外部接口的数据调用,如果超时则发送email报警,是有业务价值的;建议保留针对单个线程设置超时的功能,在文档中说明情况,由使用者进行判定如何使用。
这个目前有点困难,改动量会比较大。如果不是特别复杂的,如超过5个以上的编排任务,建议直接使用compleableFuture的超时来完成。而超过10个以上,用asyncTool时,再监控单个超时肯定出现线程暴增的情况。
dev分支的v1.5.1-SNAPSHOP版本加入了单wrapper时间监控的功能(原理是单线程时间轮对所有注册的wrapper进行检查),可以试试看(暂未大规模测试过,可能会有潜在bug)
我在timeWheel分支里实现了单个任务超时的功能,采用时间轮方式
登录 后才可以发表评论