首页 > 解决方案 > 在骆驼中暂停文件处理?

问题描述

我有一条看起来像这样的路线,第一条路线从文件中读取

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


from(directEndpoint)
   .routeId(routeId)
   .routePolicy(routePolicy)
   .process(proxyFieldProcessor)
   .marshal().json(JsonLibrary.Jackson)
   .to(http-endpoint);

如果来自其他端点的错误响应太多,我需要暂停文件处理。我在第二条路由上使用自定义路由策略,这确实暂停了第二条路由,但第一条路由继续向第二条路由发送消息,导致org.apache.camel.component.direct.DirectConsumerNotAvailableException

有没有其他方法可以在骆驼中暂停文件处理?

标签: apache-camel

解决方案


准确做到这一点的一种方法是在第二条路由中实现一个错误处理程序,它使用 ControlBus 组件来挂起第一个:

controlbus:route?routeId=foo&action=suspend

推荐阅读