Spring интеграции файлов java config - PullRequest
0 голосов
/ 24 января 2020

Я хочу использовать интеграцию Spring для разработки приложения, которое выполняет следующие действия:

  1. Опрашивает файл в каталоге, когда он доступен.
  2. Копирует файл в каталог архива
  3. обработайте файл и добавьте путь к базе данных.

Я не уверен, как настроить это, и я не нахожу никакой хорошей документации. Большинство из них имеют конфигурацию в xml, и я хочу java config. У меня есть этот код, но это просто копирование файла и удаление источника. я не знаю, как обработать источник.

 @Bean
    public MessageChannel fileInputChannel() {
        return new DirectChannel();
    }
    @Bean
    @InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "1000"))
    public MessageSource<File> fileReadingMessageSource() {
        FileReadingMessageSource source = new FileReadingMessageSource();
        source.setDirectory(new File(INBOUND_PATH));
        source.setFilter(new SimplePatternFileListFilter("*.pdf"));

        source.setLoggingEnabled(true);
        return source;
    }


    @Bean
    @ServiceActivator(inputChannel = "fileInputChannel")
    public FileWritingMessageHandler fileWritingMessageHandler() {


        FileWritingMessageHandler fileWritingMessageHandler = new FileWritingMessageHandler(
                new File(OUTBOUND_PATH));
        fileWritingMessageHandler.setAutoCreateDirectory(true);
        fileWritingMessageHandler.setExpectReply(false);
        fileWritingMessageHandler.setDeleteSourceFiles(true);
        return fileWritingMessageHandler;
    }

1 Ответ

2 голосов
/ 24 января 2020

У вас есть конкретные c бизнес-требования, и даже если у нас есть образцы в Java, это не означает, что ваш сценарий использования будет рассмотрен там. Мы полностью открыты для участия в проекте примеров, о которых Олег упоминает в своих комментариях, но это уже ваше сообщество. Здесь мы действительно не можем угадать все варианты использования поля, которые нужно охватить в образце.

Некоторое решение по вашему запросу может быть следующим:

  1. fileInputChannel должен быть PublishSubscribeChannel с вашим существующим fileWritingMessageHandler() в качестве второго абонента.
  2. Вы добавляете первого подписчика (@ServiceActivator) для обработки этого файла и, как вы сказали, сохраняете в БД, который определенно может быть следующим @ServiceActivator после этого.

См. @Order аннотацию, которая будет присутствовать вместе с упомянутой @ServiceActivator, чтобы убедиться, что ваши подписчики подписаны в правильном порядке. Поскольку вы действительно собираетесь переместить файл, очень важно обработать его перед отправкой на этот FileWritingMessageHandler.

Эту задачу также можно выполнить с помощью Java DSL, и даже, возможно, ее код может быть намного короче ,

Сказав, что я бы попросил вас прочитать документацию, начиная с EIP Book , чтобы ознакомиться с концепциями и принципами интеграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...