2

Я новичок в интеграции Spring, и я пытаюсь сделать POC, используя Spring интеграции FTP-файл для чтения файлов из FTP-адреса. Когда я развернул свое приложение на двух экземплярах Tomcat, я вижу, что оба экземпляра загружают файлы из местоположения FTP.Весной интеграции FTP File Adapter на нескольких экземплярах обработки дубликатов

Я использую виртуальный FTP-сервер (Xlight), запущенный на моей машине. Когда я сначала копировал файлы в удаленный каталог, оба экземпляра загружали файлы, но когда я копировал несколько файлов снова в удаленную папку, ни один из экземпляров не выбирал новые добавленные файлы. Одна из вещей, которую я также хочу достичь, когда мое приложение развернуто в нескольких экземплярах, хочет удостовериться, что один файл обрабатывается только один раз.

Пожалуйста, сообщите, что мне не хватает.

Ниже мой конфигурационный файл:

<bean id="ftpSessionFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> 
    <property name="host" value="${ftp.host}"/> 
    <property name="port" value="${ftp.port}"/> 
    <property name="username" value="${ftp.username}"/> 
    <property name="password" value="${ftp.password}"/> 

    <!-- whether server should connect to client's port or client should connect server port for initiating file transfer --> 
    <!-- <property name="clientMode" value="${ftp.clientMode}"/> --> 
    <!-- different file types involve ASCII , EBCDIC , BINARY (default) --> 
    <!-- <property name="fileType" value="${ftp.fileType}"/> --> 
    <!-- <property name="bufferSize" value="${ftp.bufferSize}"/> --> 
</bean> 

<int-ftp:inbound-channel-adapter id="ftpInbound" channel="ftpInboundChannel" session-factory="ftpSessionFactory" charset="UTF-8" auto-create-local-directory="true" delete-remote-files="false" remote-directory="/SpringFtpOutbound/remote" remote-file-separator="/" preserve-timestamp="false" temporary-file-suffix=".writing" local-filter="myFilter" local-directory="/work/SpringFtpInbound_2"> 
    <int:poller fixed-rate="2000" max-messages-per-poll="1"/> 
</int-ftp:inbound-channel-adapter> 

<bean id="myFilter" class="org.springframework.integration.file.filters.CompositeFileListFilter"> 
    <constructor-arg> 
    <list> 
     <bean class="org.springframework.integration.file.filters.FileSystemPersistentAcceptOnceFileListFilter"> 
     <constructor-arg name="store" ref="metadataStore"/> 
     <constructor-arg value="*.*"/> 
     </bean> 
     <bean class="org.springframework.integration.file.filters.SimplePatternFileListFilter"> 
     <constructor-arg value="*.xml" /> 
     </bean> 
    </list> 
    </constructor-arg> 
</bean> 

<bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true" p:host-name="localhost" p:port="6379" /> 
    <bean name="metadataStore" class="org.springframework.integration.redis.metadata.RedisMetadataStore"> 
    <constructor-arg name="connectionFactory" ref="redisConnectionFactory"/> 
</bean> 

<int-file:file-to-string-transformer id="myFileToStringTransfromer" input-channel="ftpInboundChannel" output-channel="transformChannel" /> 

<int-xml:xpath-splitter id="ftpFileSplitter" input-channel="transformChannel" output-channel="xpathSplitterChannel"> 
    <int-xml:xpath-expression expression="/bancsRequest/input"/> 
</int-xml:xpath-splitter> 

<int:transformer id="myCustomTransformer" ref="myTransformerBean" input-channel="xpathSplitterChannel" method="transform" output-channel="ftpOutboundChannel"> 
</int:transformer> 

<bean id="myTransformerBean" class="com.ntrs.geh.ftp.file.poc.transformer.MyXmlPayloadTransformer"/> 

<int-jms:outbound-channel-adapter id="outboundChannelAdapter" channel="ftpOutboundChannel" jms-template="ftpOutQueueJmsTemplate" > 
</int-jms:outbound-channel-adapter> 

ответ