java - Camel : Stop a timer route after the processing is complete

标签 java apache-camel

我正在使用“timer”组件和“repeatCount=1”动态添加路线来添加路线。一旦完成本次运行,我需要停止该路线。

from("timer://" + host + "-Compressor?delay=10000&repeatCount=1")
    .process(.....)
.to("mock:test");

这里,host是动态添加路由时使用的变量。需要停止该路线,以便在需要时再次生成它。我无法做的是如何知道路由是否没有待处理的消息。对于 GenericFileConsumer,有一个方法“getPendingExchangesSize()”。但我没有得到该组件的任何类似信息。

此外,计时器组件仅用于启动路线,无需任何外部模拟,并且可以选择仅运行一次。

最佳答案

请参阅 controlbus eip 模式。您可以路由到端点来停止路由。

您可能需要使用“async=true”来执行此操作,因为您会停止当前正在路由的路线,这在同步模式下无法正常工作,因为 Camel 会在优雅地停止之前尝试完成路线的飞行消息方式

关于java - Camel : Stop a timer route after the processing is complete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453347/

相关文章:

java - 如何更改特定单元格apache poi 3.9的字体颜色

java - 如何使用基本身份验证从网站检索数据?

ftp - Apache Camel FTP 下载不会删除远程文件

java - Apache Camel : Spring multicast + processing

web-services - 将 CXF 与 Apache Camel 结合使用时,如何设置 WS-Addressing MessageId header ?

java - Android 如何在得到一个结果时停止递归函数

java - Apache POI下载后初始计算公式

java - 如何设置 apache Camel Groovy 脚本组件的属性

Java - 深度克隆具有多种类型元素的 Vector

java - spring new operator 有什么作用