Apache Camel не отслеживает изменения файлов

В продолжение темы "Как можно использовать Apache Camel отслеживать изменения файлов?"

Я использую версию верблюда 2.23.0, URL-адрес выглядит так:

?noop=true&idempotentKey=${file:name}-${file:modified}

Но обновленный файл по-прежнему не потребляется верблюдом.


person Teja    schedule 06.02.2019    source источник
comment
Добро пожаловать в переполнение стека. Чтобы помочь вам лучше, не могли бы вы ответить на следующее? Не могли бы вы опубликовать полное определение конечной точки (или маршрут)? Откуда ты знаешь, что это не работает? что ты уже испробовал? Как вы обновили файл?   -  person ShellDragon    schedule 06.02.2019
comment
Я действительно не вижу никаких проблем с noop=true&idempotentKey=${file:name}-${file:modified}. Он должен работать нормально.   -  person ShellDragon    schedule 06.02.2019
comment
Я использую потребительский шаблон верблюда для использования файлов с ftps-сервера. URL-адрес FTPS выглядит так: ftps://${hostname}:21/folder?username=${username}&password=${password}&binary=true&noop=true&idempotentKey=${file:name}-${file:modified}. Первоначальный запуск, Consumertemplate подберет все файлы на FTP-сайте, я попытался повторно загрузить файл, содержимое файла точно такое же, но дата создания файла отличается. Во время второго запуска потребительский шаблон верблюда не использует повторно загруженный файл.   -  person Teja    schedule 06.02.2019
comment
Можете ли вы дважды проверить файловую систему, чтобы увидеть, изменится ли временная метка modified после того, как вы поместите туда новый файл? Что это за файловая система? Как вы отправляете файл туда? У вас есть ssh доступ туда?   -  person ShellDragon    schedule 06.02.2019
comment
Я использовал winscp для подключения к FTP-серверу, проверил отметку времени изменения файла.   -  person Teja    schedule 07.02.2019
comment
Вы видите, что верблюд регулярно опрашивает местоположение ftps? Что говорят журналы? Возможно, вы можете включить DEBUG ведение журнала и/или отслеживание маршрута/контекста, чтобы увидеть, что происходит на самом деле.   -  person ShellDragon    schedule 07.02.2019
comment
Нашел это в журнале TRACE. [TRACE] — этот потребитель является идемпотентным, и файл был использован до сопоставления с idempotentKey: name-modified. Этот файл будет пропущен: RemoteFile[ABCD.zip]. Но когда я проверил в winscp, измененная временная метка явно изменена.   -  person Teja    schedule 07.02.2019
comment
Нашел это в GenericFileConsumer.class от camel-core — 2.23.0. На основе идемпотентного ключа значение ключа оценивается как измененное по имени, а не по имени файла и отметке времени модификации. Строковый ключ = file.getAbsoluteFilePath(); if (endpoint.getIdempotentKey() != null) { манекен Exchange = endpoint.createExchange(file); key = endpoint.getIdempotentKey().evaluate(dummy, String.class); } значение ключа оценивается как измененное по имени вместо фактического имени файла и даты модификации.   -  person Teja    schedule 07.02.2019
comment
Проблема решена добавлением простого. ?noop=true&idempotentKey=$simple{file:name}-$simple{file:modified} Спасибо, ShellDragon, за ваш вклад.   -  person Teja    schedule 07.02.2019


Ответы (1)


?noop=true&idempotentKey=$simple{файл:имя}-$simple{файл:модифицирован}

person Teja    schedule 09.02.2019