Как проверить, успешно ли установлено соединение SFTP при использовании Spring Integration для входящего адаптера

1

Я использую Spring Integration для передачи XML файлов из SFTP в Local. Я использовал код, предоставленный в Spring Community.

Файл основного класса

public class SFTPMain {
  public static void main(String[] args) {
    ConfigurableApplicationContext context =
        new ClassPathXmlApplicationContext("/SftpInboundReceiveSample-context.xml", SftpInboundReceiveSample.class);
    SftpInboundReceiveSample sftp = context.getBean("sftpService", SftpInboundReceiveSample.class);
    sftp.setContext(context);
    try {
        sftp.receiveFile();
    } catch (Exception e) {
        System.out.println(e);
     } finally {
         context.close();
    }
}
}

Класс обслуживания

@Component("sftpService")
public class SftpInboundReceiveSample {

public ConfigurableApplicationContext getContext() {
    return context;
}
public void setContext(ConfigurableApplicationContext context) {
    this.context = context;
}

ConfigurableApplicationContext context;

public void receiveFile(){
    try {
        PollableChannel localFileChannel = context.getBean("receiveChannel", PollableChannel.class);
        SourcePollingChannelAdapter adapter = context.getBean(SourcePollingChannelAdapter.class);       
        adapter.start();
        System.out.println("Adapter started...");
        Message<?> received = localFileChannel.receive();
        System.out.println("Received first file message: " + received);
        MessageHeaders header= received.getHeaders();
        header.getTimestamp();

    }
    finally {
    }
}
}

Файл XML

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:int="http://www.springframework.org/schema/integration"
    xmlns:int-sftp="http://www.springframework.org/schema/integration/sftp"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/integration 
                        http://www.springframework.org/schema/integration/spring-integration.xsd
                        http://www.springframework.org/schema/integration/sftp 
                        http://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd">

<import resource="SftpSampleCommon.xml" />

<bean id="sftpSessionFactory"
    class="org.springframework.integration.file.remote.session.CachingSessionFactory">
    <constructor-arg ref="defaultSftpSessionFactory" />
</bean>

<bean id="defaultSftpSessionFactory"
        class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="${sftp.host}"/>
    <property name="password" value="${sftp.password}"/>
    <property name="port" value="${sftp.port}"/>
    <property name="user" value="${sftp.username}"/>
</bean>

<int-sftp:inbound-channel-adapter id="sftpInbondAdapter"
    session-factory="sftpSessionFactory" channel="receiveChannel"
    filename-pattern="*" remote-directory="/loblawln"
    local-directory="D:/local-dir"
    auto-create-local-directory="true" temporary-file-suffix=".writing"
    delete-remote-files="false">
    <int:poller fixed-rate="1000" max-messages-per-poll="1" />
</int-sftp:inbound-channel-adapter>

<int:channel id="receiveChannel">
    <int:queue />
</int:channel>
</beans>

Также хотел бы знать, является ли опрос обязательным или нет, поскольку я бы использовал адаптер через CRON-задание, которое будет пинговать SFTP-сервер только один раз в день.

Теги:
spring
spring-integration

1 ответ

0
Лучший ответ

В первую очередь <poller> поддерживает cron. Итак, я не вижу причин вводить некоторые дополнительные CRON job.

С другой стороны, у <poller> есть опция error-channel. С этим вы можете поймать любые проблемы внутри потока опроса, включая ошибки с SFTP-соединениями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню