El programa que estoy intentando construir, consume archivos en un recurso compartido de archivos de Windows usando Camel 2.18.5 y otros programas ocasionalmente agregan / modifican / eliminan archivos en la carpeta compartida.
Construyendo una ruta de prueba simple
from("file:///C:/Temp/from?readLock=changed&readLockCheckInterval=10000&readLockTimeout=0")
.routeId("SimpleFileRoute")
.to("file:/C:/Temp/to");
luego, colocando un archivo, test.txt, en la carpeta from, esperando que la ruta haga un archivo test.txt.camelLock y luego eliminando manualmente test.txt antes de que el readLockCheckInterval haya pasado, hará que la ruta se cuelgue indefinidamente sin lanzar un excepción o procesamiento de otros archivos.
"cambiado" parece ser el único readLock apropiado para la situación.
¿Hay alguna manera de hacer que la ruta arroje una excepción, limpie el archivo de bloqueo y continúe consumiendo archivos?
Editar: el seguimiento de la pila del hilo que parece ser la ruta es la siguiente:
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
Tengo que descargar muchas páginas web y voy a usar HttpURLConnection para hacerlo porque es muy conveniente. Sin embargo, no quiero usar descargas basadas en hilos. Deseo usar async ...
Tengo dos listas y tengo que crear un mapa a partir de ellas. Uno, estoy iterando en bucle y segundo, quería ser arrojado por una secuencia y luego recolectar en el mapa, pero no tengo idea de cómo usar los recopiladores ...
Estoy preparando una prueba de carga para un servicio web y casi he terminado, pero tengo un problema. En este momento tengo algunos oyentes, por ejemplo, gráficos, uno para muestras exitosas y otro solo para fallas. ...
Estoy tratando de tomar el texto masculino femenino de este botón de opción, pero me da una excepción de puntero nulo, y estoy atascado en cada punto de tratar de arreglar eso, ya sea almacenando el texto como otro ...