Apache camel 在Camel中暂停文件处理?

Apache camel 在Camel中暂停文件处理?,apache-camel,Apache Camel,我有一个路径,看起来像这样,第一个路径读取文件 from("file:verylargefile.csv") .multicast() .parallelProcessing() .to(directEndpoint)).end() from(directEndpoint) .routeId(routeId) .routePolicy(routePolicy) .process(proxyFieldProcessor) .marshal().json(JsonLibr

我有一个路径,看起来像这样,第一个路径读取文件

from("file:verylargefile.csv")
.multicast()
.parallelProcessing()
.to(directEndpoint)).end()


from(directEndpoint)
   .routeId(routeId)
   .routePolicy(routePolicy)
   .process(proxyFieldProcessor)
   .marshal().json(JsonLibrary.Jackson)
   .to(http-endpoint);
如果rest端点的错误响应太多,我需要暂停文件处理。我在第二条路由上使用自定义路由策略,这会挂起第二条路由,但第一条路由会继续向第二条路由发送消息,这会导致
org.apache.camel.component.direct.DirectConsumerNotAvailableException


在camel中是否有其他暂停文件处理的方法?

一种方法是在第二个路由中实现一个错误处理程序,使用ControlBus组件暂停第一个路由:

controlbus:route?routeId=foo&action=suspend

一种方法是在第二个路由中实现一个错误处理程序,使用ControlBus组件挂起第一个路由:

controlbus:route?routeId=foo&action=suspend

感谢您的回复,第一个路由是文件处理路由它读取一个非常大的文件如果我尝试在挂起之前挂起它运行到完成的路由我认为这是由于Camel处理机上交换的默认行为,与关机策略有关,看,是的,暂停第一条路线不是一个选项,这就是为什么我尝试暂停第二条路线,它从第一条路线交换,但在第二条路由被挂起后,第一条路由继续向第二条路由发送消息,这就是为什么我得到DirectConsumerNotAvailableException我最初的答案是关于如何中断文件处理的问题。正如前面提到的,这只能在Camel的约束范围内完成——干净地。因为在第一条路由上已经有一个正在处理的交换,所以必须对它进行处理,即使它失败了。根据目前的路线设置,我认为这是预期的行为。除了您最初的问题之外,您当然可以探索其他备选方案,例如使用
redeliveryDelay
redeliveryPolicyProfile
。感谢您的回复,第一个路由是文件处理路由它读取一个非常大的文件如果我尝试在挂起之前挂起它运行到完成的路由我认为这是由于Camel处理机上交换的默认行为,与关机策略有关,看,是的,暂停第一条路线不是一个选项,这就是为什么我尝试暂停第二条路线,它从第一条路线交换,但在第二条路由被挂起后,第一条路由继续向第二条路由发送消息,这就是为什么我得到DirectConsumerNotAvailableException我最初的答案是关于如何中断文件处理的问题。正如前面提到的,这只能在Camel的约束范围内完成——干净地。因为在第一条路由上已经有一个正在处理的交换,所以必须对它进行处理,即使它失败了。根据目前的路线设置,我认为这是预期的行为。除了您最初的问题之外,您当然可以探索其他替代方案,例如使用
重新交付布局
重新交付policyprofile