Вопрос:

Исключение во время интеграции пружины с Zookeeper

spring-integration apache-zookeeper spring-integration-sftp

256 просмотра

1 ответ

32 Репутация автора

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

<beans:bean id="compositeFilter"
        class="org.springframework.integration.file.filters.ChainFileListFilter">

        <beans:constructor-arg >
        <beans:set>
          <beans:bean
                    class="org.springframework.integration.sftp.filters.SftpRegexPatternFileListFilter">
                        <beans:constructor-arg value="^.*\.(dat|DAT)$" />
                </beans:bean>
            <beans:bean
                    class="org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter">
                    <beans:constructor-arg name="store"
                        ref="metadataStore" />
                    <beans:constructor-arg value="filterprefix" />
                </beans:bean>
          </beans:set>

        </beans:constructor-arg>

    </beans:bean>

    <beans:bean id="zookeeperClient"
        class="org.springframework.integration.zookeeper.config.CuratorFrameworkFactoryBean">
        <beans:constructor-arg value="${zookeeper.server.uri}" />
    </beans:bean>

    <beans:bean id="metadataStore"
        class="org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore">
        <beans:constructor-arg ref="zookeeperClient" />
        <beans:property name="root" value="/metaDataStore" />
    </beans:bean>

Ниже приведен пример исключения, которое я получаю. Когда я запускаю выше программы, я получаю следующую ошибку.

Caused by: 
Caused by: java.lang.IllegalArgumentException: Invalid path string "/AtdFaureciaMetaDataStore/.." caused by relative paths not allowed @27
    at org.apache.curator.utils.PathUtils.validatePath(PathUtils.java:102)
    at org.apache.curator.utils.PathUtils.validatePath(PathUtils.java:37)
    at org.apache.curator.utils.ZKPaths.fixForNamespace(ZKPaths.java:105)
    at org.apache.curator.framework.imps.NamespaceImpl.fixForNamespace(NamespaceImpl.java:104)
    at org.apache.curator.framework.imps.CuratorFrameworkImpl.fixForNamespace(CuratorFrameworkImpl.java:599)
    at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:458)
    at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:44)
    at org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore.createNode(ZookeeperMetadataStore.java:257)
    at org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore.putIfAbsent(ZookeeperMetadataStore.java:119)
Автор: chetan agrawal Источник Размещён: 08.11.2017 11:52

Ответы (1)


2 плюса

74037 Репутация автора

Решение

Рассмотрим использование ChainFileListFilterвместо CompositeFileListFilter:

**
 * The {@link CompositeFileListFilter} extension which chains the result
 * of the previous filter to the next one. If a filter in the chain returns
 * an empty list, the remaining filters are not invoked.
 *
 * @param <F> The type that will be filtered.
 *
 * @author Artem Bilan
 * @author Gary Russell
 *
 * @since 4.3.7
 *
 */
public class ChainFileListFilter<F> extends CompositeFileListFilter<F> {

Он не передает отброшенные файлы следующим фильтрам в цепочке.

С другой стороны , на самом деле считают некоторые непустой prefixдля , SftpPersistentAcceptOnceFileListFilterчтобы избежать этой относительной погрешности пути.

Автор: Artem Bilan Размещён: 09.11.2017 12:16
Вопросы из категории :
32x32