Как заблокировать запись файла, чтобы другой потребитель не мог потреблять - PullRequest
0 голосов
/ 10 мая 2018

Я работаю над заменой данных в файле (это большой файл 400 МБ) с использованием верблюда и я столкнулся с проблемой, когда другой файл самовывоза потребителя, хотя файл используется (он находится в режиме записи).

Есть ли в Camel способ заблокировать файл, находящийся в режиме записи, чтобы другой потребитель / маршрут не мог его использовать. Это должно потреблять, как только запись сделана. Я пытался с readLocks, но пока не повезло.

from("file://A").split().tokenize("\n", 999).streaming()
.log("Spliting::::::::::").unmarshal(csv).bean("transferDate", "enrich")
.marshal(csv).to("file://B?fileExist=Append");

from("file://B?delete=true").to("file://A"); // this route pick up file even the first route haven't finished writing file completely

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете использовать готовых файлов . Если вы настраиваете их на приемнике файлов, он игнорирует все файлы до тех пор, пока рядом с реальным файлом не окажется готовый (или маркерный) файл.

Вы также можете настроить производителя файлов для создания готовых файлов.

См. Camel Docs для компонента File и перейдите к главе Using done files.

...