2016-06-17 3 views
0

При попытке запустить банку отдельно на машине Unix поток для расписания задач не будет пересканироваться через некоторое время, но он отлично работает на компьютере с Windows. Даже приложение работает в linux при запуске, но идет дальше, когда-то он не работает. Пожалуйста, дайте мне знать. Есть ли способ избежать этой проблемы.FTP - использование процесса планирования задач Spring Integration останавливается по истечении определенного периода времени

@Bean 
@InboundChannelAdapter(value = "inputChannel", poller = @Poller(fixedDelay = "1000", maxMessagesPerPoll = "1")) 
public MessageSource<?> receive() { 

    FtpInboundFileSynchronizingMessageSource messageSource = new FtpInboundFileSynchronizingMessageSource(synchronizer()); 
    File Temp = new File(TEMP_FOLDER); 
    messageSource.setLocalDirectory(Temp); 
    messageSource.setAutoCreateLocalDirectory(true); 
    return messageSource; 
} 

private AbstractInboundFileSynchronizer<FTPFile> synchronizer() { 

    AbstractInboundFileSynchronizer<FTPFile> fileSynchronizer = new FtpInboundFileSynchronizer(sessionFactory()); 
    fileSynchronizer.setRemoteDirectory(ftpFileLocation); 
    fileSynchronizer.setDeleteRemoteFiles(false); 
    Pattern pattern = Pattern.compile(".*\\.xml$"); 
    FtpRegexPatternFileListFilter ftpRegexPatternFileListFilter = new FtpRegexPatternFileListFilter(pattern); 
    fileSynchronizer.setFilter(ftpRegexPatternFileListFilter); 
    return fileSynchronizer; 
} 


@Bean(name = "sessionFactory") 
public SessionFactory<FTPFile> sessionFactory() { 

    DefaultFtpSessionFactory sessionFactory = new DefaultFtpSessionFactory(); 
    sessionFactory.setHost(ftpHostName); 
    sessionFactory.setUsername(ftpUserName); 
    sessionFactory.setPassword(ftpPassWord); 
    return sessionFactory; 
} 

@Bean(name = "inputChannel") 
public PollableChannel inputChannel() { 
    return new QueueChannel(); 
} 

@Bean(name = PollerMetadata.DEFAULT_POLLER) 
public PollerMetadata defaultPoller() { 

    PollerMetadata pollerMetadata = new PollerMetadata(); 
    pollerMetadata.setTrigger(new PeriodicTrigger(100)); 
    return pollerMetadata; 
} 

@ServiceActivator(inputChannel = "inputChannel") 
public void transferredFilesFromFTP(File payload) { 
    callWork(payload); 
} 

ответ

0
  1. Там нет причин, чтобы иметь один Poller сразу после другого. Я имею в виду, что вам это не нужно QueueChannel.

  2. Это действительно интересно, что это за волшебство callWork(payload); код делаю. Разве у него нет какой-то блокировки в течение долгого времени? Даже если это выглядит как void (не возвращая чего-то ждать), но у вас может быть какой-то код с головоломкой, который крадет весь поток по умолчанию TaskScheduler (по умолчанию 10).

Похоже, это в полной мере относится к вашему другому вопросу Spring Integration ftp Thread process

+0

Спасибо Артем !! Эта проблема решается там, где из-за брандмауэра в Unix блокируется порт, и я изменил его на пассивный порт из активного порта, и он работал с помощью ссылки - http://stackoverflow.com/questions/26632577/ftp-issues-with-ftp- въездной-канальный-адаптер. Спасибо Artem и за указанную выше ссылку. – user3428736

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

  • Нет связанных вопросов^_^