【问题标题】:Spring Integration Streaming Inbound channel adapter in cluster environment集群环境中的 Spring Integration Streaming Inbound 通道适配器
【发布时间】:2018-04-17 14:54:00
【问题描述】:

我需要在多/集群环境中实现 sftp 流式入站通道适配器。我不应该将文件存储在我的本地目录中,我已经流式传输文件并立即处理它。 它在单个实例中运行良好,但如果我尝试在多个节点中运行轮询器,则会遇到重复处理等问题,找不到第二个节点的文件。

我尝试按照文档使用 propertiesmetadatastore 来实现它 https://docs.spring.io/spring-integration/reference/html/redis.html#redis-metadata-store
正在创建数据存储区,但问题仍未解决。

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    好吧,不清楚您的环境中发生了什么,但 SftpPersistentAcceptOnceFileListFilter 与任何可能的分布式 MetadataStore 是您的解决方案。对,RedisMetadataStore 就是其中之一:不过,您的所有集群实例都必须查看同一个 Redis 服务器。

    【讨论】:

    • Artem,我认为您的意思是 FTP 或 SFTP 持久性过滤器;我们不使用流适配器中的文件系统。
    • 如果有帮助,让我们考虑一下:stackoverflow.com/help/someone-answers!这样所有其他搜索者都会知道这是针对他们类似问题的解决方案
    • 但是我需要使用 Redis/Memcache 还是它也可以与 PropertiesPersisitingMetadatastore 一起使用。下面是我正在尝试的代码 'SftpPersistentAcceptOnceFileListFilter filter = new SftpPersistentAcceptOnceFileListFilter(meta(),"."); filter.setFlushOnUpdate(true);' PropertiesPersistingMetadataStore meta = new PropertiesPersistingMetadataStore(); meta.setBaseDirectory("/tmp"); meta.setFileName("stream.properties");返回元;
    • 好吧,理论上如果/tmp 文件系统目录可用于集群中的所有实例,例如挂载的网络资源,然后是的,它可以工作。但是您需要了解,为避免重复,应该有一些共享​​>让所有实例查看。
    • @ArtemBilan 我是否需要将任何信息从节点写入数据存储以锁定文件,或者如果数据存储声明存在,则由 SftpPersistentAcceptOnceFileListFilter 自行处理
    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 2014-06-29
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2014-10-16
    相关资源
    最近更新 更多