【问题标题】:Folder polling in a cluster集群中的文件夹轮询
【发布时间】:2015-09-07 00:21:26
【问题描述】:

我在集群中的两个节点上部署了一个 spring 集成应用程序。他们使用入站文件适配器轮询单个目录上的传入文件。 我有以下配置。

<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 的示例吗?

【问题讨论】:

    标签: spring redis spring-integration


    【解决方案1】:

    您是如何创建文件的?写入后它们会自动移动吗?

    如果您在原地编写它们,则两个适配器都可能会看到该文件,因为时间戳已更改。

    仅当文件不在商店中或lastModified 日期已更改时,过滤器才会通过该文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多