apache-camel - 如何恢复暂停的骆驼消费者
问题描述
我创建了一个RoutePolicy,当路由中发生可配置数量的错误时,它会暂停消费者。
在我暂停消费者之前,我想确保它会在可配置的时间后恢复(例如暂停后 30 分钟)。
实现这一目标的最佳方法是什么?
- 我尝试使用
onExchangeBegin
RoutePolicy 的方法。但是在测试中我发现当路由暂停时它不再执行(正如我假设的那样)。 - 我试图在暂停路由之前创建一个SimpleScheduledRoutePolicy,但我没有找到在 Camel 上下文(由 Spring 支持)中注册这个新 Bean 的方法。
- 因此,我目前创建了一个TimerTask ,它向Camel Control Bus发送消息以恢复路由。这行得通,但感觉有点陌生,因为 Camel 不知道此类恢复任务。
- 还有另一种更“骆驼原生”的方式来实现我的目标吗?
解决方案
在暂停消费者之前,您可以创建一个虚拟文件。
使用过滤器对虚拟文件进行另一个路由轮询,以检查它是否是在 30 分钟前创建的。就像是:
from("file:dummyLocation?include=.dummy&delete=true&filter=#filterFileOlderThanThirtyMins)
.to("controlbus:route?routeId=suspendedRoute&action=start")
不过,这只是我的想法!
推荐阅读
- android - 侦听器为空
- sql - 将浮点字段舍入到小数点后 2 位错误
- php - 从随机路径json获取内容
- angular - 你能在 Angular(5-6)[TypeScript] 中扩展 HTML 代码吗?
- python - tensorflow:如何使用 tf.estimator.train_and_evaluate 进行分布式训练
- image - 如何在 ffmpeg 中设置视频的图像高度和宽度
- reactjs - React Formik 根据另一个字段更新一个字段
- javascript - Javascript将数据添加到数组效果不佳
- dart - 如何从颤动的路径中获取音频元数据?
- javascript - 使用javascript自动选择自定义选择框中的第一个选项