2015-10-05 3 views
1

Я работаю над простым проектом интеграции с пружиной, который выбирает некоторые файлы (с использованием файла : входящий канал-адаптер) и на основе этих файлов импортирует некоторые данные в БД.spring-integration: как удалить файл?

В конце он хотел бы удалить эти файлы, поскольку я их больше не нуждаюсь, и до сих пор я не понял, как это сделать без кодирования.

файл: исходящий канал-адаптер не идет, поскольку он перемещает файлы, а не удаляет их.

Я пытаюсь решить с

<int:outbound-channel-adapter expression="headers['file_originalFile'].delete()" ... 

Но я получаю

Не удалось преобразовать значение типа 'java.lang.String' для требуемого типа «Java. lang.Void ';

У вас есть идеи, как решить проблему без кодирования?

+0

Ошибка кажется ожидаемой, потому что весна ожидает выражения String и delete() возвращает void. Вы просмотрели этот http://docs.spring.io/spring-integration/reference/html/files.html (14.3.4 Адаптер исходящих каналов для файлов) – Azhar

ответ

0

File.delete() возвращает логическое значение и по контракту адаптер исходящего канала ДОЛЖЕН возвращать void (без вывода).

Вы можете использовать <service-activator/> с output-channel="nullChannel", чтобы отказаться от полученного результата.

Или вы можете использовать консультацию по оценке выражения для вашего конечного потребителя, как показано на рисунке retry-and-more sample.

+0

Спасибо, это то, что я искал. Наконец, я изменил выражение на 'headers ['file_originalFile']. Delete()? Null: null'. Я должен сказать, однако, что я очень удивлен, что функция удаления не работает из коробки весной-интеграции. Мне кажется, что мой сценарий довольно типичен, и все же мне пришлось найти способ «взломать» его без кодирования. Для меня это должно быть реализовано в _outbound-channel-adapter_ – Maciej

Смежные вопросы