我正在尝试创建一个简单的camel应用程序,用于将文件从一个文件夹传输到另一个文件夹。
我想问两个问题
1. Is there a way to stop the route once the source folder is empty.
2. Is there a way to signel camel to stop the process, but in this case the camel should wait till the in-flight messages are processed.
对于,1,我尝试了一些东西,如(基于骆驼停止时,没有文件夹http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html)
<bean id="shutDownProcessor" class="com.acme.framework.util.ShutDownProcessor" />
<route customId="true" id="ftpSend">
<from uri="file:in"/>
<choice>
<when>
<simple>${body} != null</simple>
<wireTap uri="file:copy?fileName=${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}-${file:size}.${file:ext}&sendEmptyMessageWhenIdle=true">
<setHeader headerName="fileName">
<simple>${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}-${file:size}.${file:ext}</simple>
</setHeader>
</wireTap>
<to uri="file:out"/>
</when>
<otherwise>
<process ref="shutDownProcessor"/>
</otherwise>
</choice>
</route>
shutDownProcessor处理器看起来像,
public class ShutDownProcessor implements Processor{
Thread stop;
@Override
public void process(final Exchange exchange) throws Exception {
if (stop == null) {
stop = new Thread() {
@Override
public void run() {
try {
CamelContext context = exchange.getContext();
String currentRoute = context.getRoutes().get(0).getId();
context.stopRoute(currentRoute);
context.stop();
} catch (Exception e) {
// ignore
}
}
};
}
stop.start();
}
}
但即使源文件夹为空,似乎也不会调用shutDownProcessor处理器。任何指示都会对我们有很大帮助。
谢谢Kallada
要停止Spring的骆驼路线,DSL只需添加
我正在尝试使用多部分/表单数据将文件上传到骆驼路由。一切都很好,但是,我无法获得原始文件名。骆驼版本是:3.14.1 更新 使用对路由的以下修改进行更新。我设法处理二进制文件(获取文件名并存储它们)。但是,对于文本文件,该文件将附加边界页脚: 路线定义: 先谢谢你了 爱德华
我有一个Camel/SpringBoot应用程序,它从GraphQLendpoint检索数据,将数据存储在内存数据库(2个表)中,通过运行SQL查询提取CSV文件,然后将文件上传到FTP服务器。由于将提取约350k条记录,我使用SQLs outputType=StreamList、splitter和stream:file。整个路线如下所示: 提取数据时不会出现任何问题,并使用记录创建CSV文件。但
嗨,我在camel中有一个JMS消费者路由,我的要求是在特定事件时停止/暂停该路由(基于某个字段值),然后使用调度器恢复该路由。为此,我创建了两个路由,一个是我的原始jms消费者路由,另一个是调度程序路由,它们恢复jms消费者路由,虽然我能够暂停路由,但第二个路由不恢复暂停的路由,它显示的状态为已启动。 以下是我的两条路线 请帮助我如何实现上述场景。
通过打开到同一主机的多个连接(例如、),是否有任何方法可以提高文件传输性能?
我希望上传一个包含一个文件和一些json的多部分文件,并使用camel rest dsl将该文件输出到本地文件夹。 我在路由中使用处理器,使用HttpServletRequest将多部分请求拆分为多个部分。getPart(),但我收到以下错误: 我已经向 servlet 添加了一个多部分筛选器,并且已经尝试了使用和不使用多部分解决方案 Bean。当我调试处理器时,我可以看到 HttpServlet
我的Apache骆驼项目开始有一个相当好的结构,但我陷入了困境,因为我的routeContext中的路由无限执行。我的所有路由都使用SQL组件,我希望所有路由只执行一次。 我发现,当我的routeContext中有两条路由时,两条路由都只执行一次,但是一旦我添加了第三条路由(不管第三条路由是什么),camel就开始无限执行所有路由。我所有的路由都导致sql插入,因此相同的路由运行多次会导致重复键错