2015-06-21 3 views
1

У меня есть приложение интеграции весны, развернутое на двух узлах кластера. они опросают входящие файлы в одном каталоге с помощью входящего файлового адаптера. У меня есть конфигурация.Опрос папок в кластере

<file:inbound-channel-adapter id="inboundAdapter" channel="in" directory="file:${in.folder}" queue-size="100000" 
     filter="incoimngCompositeFilter"> 
    <int:poller id="fileInboudPoller" fixed-rate="${in.interval}" receive-timeout="${file.in.timeout}" time-unit="SECONDS" 
     max-messages-per-poll="${file.in.max.messages}" task-executor="taskExecutor" /> 
</file:inbound-channel-adapter> 

<bean id="incoimngCompositeFilter" class="org.springframework.integration.file.filters.CompositeFileListFilter"> 
    <constructor-arg> 
    <list> 
     <bean class="org.springframework.integration.file.filters.FileSystemPersistentAcceptOnceFileListFilter"> 
      <constructor-arg name="store" ref="redisMetaDataStore" /> 
      <constructor-arg name="prefix" value="test"/> 
     </bean> 
     <bean class="org.springframework.integration.file.filters.RegexPatternFileListFilter"> 
      <constructor-arg value="(?i)^(?!.*writing).*$" /> 
     </bean> 
    </list> 
    </constructor-arg></bean><bean name="redisMetaDataStore" class="org.springframework.integration.redis.metadata.RedisMetadataStore"> 
    <constructor-arg name="connectionFactory" ref="redisConnectionFactory" </bean><bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> 
    <property name="port" value="6379" /> 
</bean> 

Я получаю прерывистые результаты. Иногда он обрабатывается без какой-либо проблемы, но когда-то один экземпляр пытается обработать файлы, которые уже обрабатываются другим экземпляром. Может ли кто-нибудь указать мне на образец с помощью FileSystemPersistentAcceptOnceFileListFilter и RedisMetadataStore?

ответ

0

Как вы создаете файлы? Они атомарно перемещены после написания?

Если вы пишете их на месте, возможно, оба адаптера будут видеть файл, потому что временная метка изменилась.

Фильтр передает только файл, если его нет в магазине, или дата изменения lastModified.

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