首页 > 解决方案 > 超时取消骆驼中的异步路由

问题描述

我的应用程序中有一个后台线程,它正在慢慢浏览作业列表。我不想为此投入太多资源,但我希望它能够或多或少地取得一致的进展。问题是列表中的一些工作可能需要不成比例的时间。提前确定这些工作并不简单。这些作业是同步的并且在应用程序内部(没有外部连接来应用超时,它们只是需要处理大量的处理)。

我想做的是在一些固定的小线程池中开始执行这些任务,然后如果它们花费的时间太长就取消它们。显然我可以自己写这个,但是我们已经开始使用 Camel 进行很多内部管道,包括一些由 pub-sub 消息触发的相关任务;看来这应该是我可以用骆驼以某种方式设置的东西。

我已经将Threads DSL 视为将这些任务路由到线程池中的一种方式,但它似乎不支持超时或取消处理。我还查看了异步客户端 API(asyncSendBody等),但这会返回CompleteableFuture对象,尽管这些支持超时,但 AFAICT 他们不支持在另一端中断异步作业,这违背了我的目的(我想释放开始处理其他要求不高的工作的资源)

有什么方法可以在 Camel 中做到这一点,还是我只需要使用 Java/Spring 任务执行支持从头开始编写?

标签: javaapache-camel

解决方案


推荐阅读