java - 超时取消骆驼中的异步路由
问题描述
我的应用程序中有一个后台线程,它正在慢慢浏览作业列表。我不想为此投入太多资源,但我希望它能够或多或少地取得一致的进展。问题是列表中的一些工作可能需要不成比例的时间。提前确定这些工作并不简单。这些作业是同步的并且在应用程序内部(没有外部连接来应用超时,它们只是需要处理大量的处理)。
我想做的是在一些固定的小线程池中开始执行这些任务,然后如果它们花费的时间太长就取消它们。显然我可以自己写这个,但是我们已经开始使用 Camel 进行很多内部管道,包括一些由 pub-sub 消息触发的相关任务;看来这应该是我可以用骆驼以某种方式设置的东西。
我已经将Threads DSL 视为将这些任务路由到线程池中的一种方式,但它似乎不支持超时或取消处理。我还查看了异步客户端 API(asyncSendBody
等),但这会返回CompleteableFuture
对象,尽管这些支持超时,但 AFAICT 他们不支持在另一端中断异步作业,这违背了我的目的(我想释放开始处理其他要求不高的工作的资源)
有什么方法可以在 Camel 中做到这一点,还是我只需要使用 Java/Spring 任务执行支持从头开始编写?
解决方案
推荐阅读
- r - 如何更改 R 中 shapefile 数据框中的单个单元格名称?
- javascript - VU 中用于切换按钮的自定义 Bootstrap ES6(模块)
- ruby - CSV 文件有问题。"," 处或附近的语法错误 (PG::SyntaxError)
- android - 如何在使用 node.js 和 express api 的移动应用程序中使用 webrtc?
- angular - 将 Angular Material Table 中的行数据显示到另一个组件中
- android - 额外的权限被添加到 apk 和 bundle
- angular - 如何使 RouterLinkActive 可以访问 ng-template 中提供的 RouterLink
- python - 如何调用初始化为数字的对象?
- javascript - 如何使用 axios 在 react-redux 中创建登录页面
- android - SystemUI 中的DevicePolicyManager.lockNow() 使用自定义ROM 快速设置