当前位置: 首页 > 知识库问答 >
问题:

Apache Camel路由在处理过程中删除文件时挂起

刁瀚昂
2023-03-14
        from("file:///C:/Temp/from?readLock=changed&readLockCheckInterval=10000&readLockTimeout=0")
            .routeId("SimpleFileRoute")
            .to("file:/C:/Temp/to");
Daemon Thread [Camel (camel-1) thread #2 - file:///C:/Temp/from] (Suspended)    
Thread.sleep(long) line: not available [native method]  
FileChangedExclusiveReadLockStrategy.sleep() line: 104  
FileChangedExclusiveReadLockStrategy.acquireExclusiveReadLock(GenericFileOperations<File>, GenericFile<File>, Exchange) line: 90    
GenericFileRenameProcessStrategy<T>(GenericFileProcessStrategySupport<T>).begin(GenericFileOperations<T>, GenericFileEndpoint<T>, Exchange, GenericFile<T>) line: 64    
GenericFileRenameProcessStrategy<T>.begin(GenericFileOperations<T>, GenericFileEndpoint<T>, Exchange, GenericFile<T>) line: 37  
FileConsumer(GenericFileConsumer<T>).processExchange(Exchange) line: 362    
FileConsumer(GenericFileConsumer<T>).processBatch(Queue<Object>) line: 223  
FileConsumer(GenericFileConsumer<T>).poll() line: 187   
FileConsumer(ScheduledPollConsumer).doRun() line: 174   
FileConsumer(ScheduledPollConsumer).run() line: 101 
Executors$RunnableAdapter<T>.call() line: 511   
ScheduledThreadPoolExecutor$ScheduledFutureTask<V>(FutureTask<V>).runAndReset() line: 308   
ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.access$301(ScheduledThreadPoolExecutor$ScheduledFutureTask) line: 180    
ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.run() line: 294  
RejectableScheduledThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1142   
ThreadPoolExecutor$Worker.run() line: 617   
Thread.run() line: 745  

共有1个答案

居京
2023-03-14

好的,问题是您使用readlocktimeout=0,如果出于任何原因不能授予对文件的锁,则防止将读锁转换为超时。你真的不应该这样做(坏主意),所以把它设置为一个更高的超时值。

另一方面,我们还可以改进camel-core,在检查更改时检查文件是否仍然存在,如果文件不存在,那么它也可以退出检查。

我已经记录了一张关于这一点的票:https://issues.apache.org/jira/browse/camel-13025

 类似资料:
  • 我的申请中有如下路线- 从("sftp: config").到("file: config") 我必须在生成endpoint时处理那些超出apache camel默认异常处理边界的异常。例如。编写文件时可能会出现异常。我如何处理那个异常? 在camel文档中,我了解到,对于文件消费者,他们提供了不同的选项,比如-consumer。errorHandler和consumer。bridgeErrorH

  • 问题内容: 我有一条路线映射为: 如何在运行时删除/重新映射此路由到空处理程序? 问题答案: 这将删除中间件和/或(获取/发布)路由。在express@4.9.5上测试 请注意,它 要求 中间件/路由功能具有 名称 : 如果该函数是匿名的, 它将不起作用 :

  • 问题内容: 在我的NodeJS 应用程序中,我有一些常用的路由。然后,在文件中,我想定义更多路线。 如何识别文件中定义的其他路由处理程序? 一个简单的 要求 似乎不起作用。 问题答案: 例如,如果要将 路线放在单独的文件中 ,则 可以通过以下方式创建文件: 然后您可以 通过这种方式传递 对象 来要求它: 看看这些例子 https://github.com/visionmedia/express/t

  • 我遇到了一个奇怪的情况,即我正在文件夹中创建一个文件,但我需要确保在创建文件之前,如果文件夹中有任何文件,则必须将其删除,只有当前正在处理的文件应该在那里。 因为在我的应用程序中,每天都会运行一个作业,该作业会在该文件夹中创建文件,所以当当前作业运行时,它应该删除前一天的文件,并且文件夹中不应该有任何文件,但下面显示的代码会在该文件夹中创建文件,但问题是前一天的文件,或者如果作业在同一天运行多次,

  • 我有一个包含一些文件路径的长文本。 我想做的是从其中删除路径。文件路径都类似于: 我知道使用“^/all”将选择以/all开头的句子,并选择以.js$结尾的句子。但我无法将这些合并在一起以选择整个文件路径。 毕竟,正则表达式应该放在下面的代码上以删除路径。 我能为它写正则表达式吗?有什么工具吗?