问题标签 [spring-integration-sftp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 在春季集成中刷新/更新 SessionFactory 的策略
嗨,我在我的项目中广泛使用 spring 集成,在当前情况下,使用 spring 动态流注册动态创建我的 ftp、sftp 适配器。此外,为了提供会话工厂,我根据每个唯一连接的持久配置动态创建它们。
这很好用,但有时我需要动态修改现有会话配置,在这种情况下,我确实需要会话工厂用新的会话配置刷新。这可能是由于动态更改信用而发生的。
为了做同样的事情,我正在寻找两种方法
- 通过 flowcontext.remove(flowid) 删除动态流。但这并没有以某种方式杀死流程,我仍然看到旧的会话工厂和流程正在运行。
- 如果有一种方法可以动态地将正在运行的适配器与新的 Sessionfactory 相关联,这也将起作用。但是仍然没有找到方法来完成这个。
请帮忙
更新
下面是我的动态注册码
我正在尝试通过删除相同的
在删除轮询器和适配器时,它们看起来仍然处于活动状态
*POST Gary 评论 *更改了链的顺序并删除了他的示例中定义的自动启动,现在轮询适配器看起来像被删除了。
更改顺序以匹配来自 Gary 的顺序,并从 flowcontext 链中删除自动启动。如果 autstrtup 为 true ,虽然看起来 bug 仍然存在。
* 研究更多 *standardIntegrationFlow.start
无论自动启动状态如何,都会启动流程中的所有组件
。我想我们确实需要检查这些 isAutostartup 并且只有在启动 IntegrationFlow 时自动启动为 True 时才启动它们。standardIF 下面的现有代码。我有办法覆盖这个或者这需要 PR 或 fix 。
spring - 在 Spring Integration 中将行预附加到新文件
嗨,我在 Spring Integration 中设计了一个集成流程,我从 SFTP 读取文件并在本地写入文件。我已将 fileExistsMode 设置为 APPEND-MODE 但我想知道是否可以在写入远程文件的内容之前将字符串预先附加到文件中?
例子,
远程文件包含以下内容:
本地文件会这样写:
ftp - 在 Spring 集成中将过滤器应用于入站 ftp 适配器的顺序
我正在使用 spring 集成入站通道适配器,如下所示
所以我使用远程过滤器和开箱即用的正则表达式过滤器。我想知道应用正则表达式过滤器和远程过滤器的顺序是什么。从最初的分析看来,正则表达式过滤器是第一位的,有人可以告诉我这个决定是在哪里做出的,这样我就可以确定了。
如果没有办法知道唯一的其他选择是使用
CompositeFileListFilter
.
spring-cloud-stream - spring-cloud-starter-stream-sink-sftp Sftp Sink,文件表达式不起作用
我正在使用 stfp 接收器并尝试根据标头命名远程文件。我提供以下属性来命名远程文件
sftp.file-expression=payload.headers['id'] + payload.headers['file_name']
我也试过 sftp.file-expression=headers['id'] + headers['file_name']
但是这些不起作用,并且在远程保留了原始文件名。这是编写SpEL表达式的正确方法吗?除了prope,我也没有得到这个属性的任何错误
java - Spring Integration SFTP 代码被调用两次
我正在尝试基本的 spring 集成以从 SFTP 下载文件。下面是一个代码。问题是 service-activator 被调用了两次。
简而言之,如果您看到日志,则 FileListener bean 中的日志会被调用两次,并且 com.jcraft.jsch 日志也会被记录两次,如果感觉有两个会话,因此我的程序会被执行两次。
请建议。
而且java代码就是这么简单。
下面是日志。
更新:
web.xml
java - Spring集成 - 如果没有返回文件,则停止轮询
我有一个轮询器正在轮询远程目录,以便通过 sftp 传输文件,但如果在 x 次尝试后找不到文件,我想停止它。有一个简单的配置吗?
当我查找上述文件(不存在)时,我似乎无限期地轮询,而如果文件不存在,我想抛出异常。
spring-integration - Spring-integration 将 xml 配置转换为 java 配置
我想将我的 xml 配置转换为 Java 类配置,但我找不到解决方案。例如我的一段配置:
我怎样才能做同样的事情,但在我的本地机器上使用 sftp(src 目录)以及如何在 java 类中编写这个配置。给我任何建议,我正在寻找答案,但我找不到出路。
spring - Spring Integration - SFTP 文件同步 - 文件名相同但时间戳不同时不生成消息
我已经使用 SftpInboundFileSynchronizingMessageSource 配置了我的应用程序。每当找到新文件(即新文件名和/或时间戳)时,我希望收到一条带有文件作为结果有效负载的消息。这是我所拥有的:
这很好用,除了在随后的轮询中我得到具有不同修改时间戳的相同文件名的情况。在这种情况下,我得到消息的空结果。当时间戳不同但文件名相同时,如何确保生成消息?
spring - SftpInboundFileSynchronizer 不同步
我有以下 SFTP 文件同步器:
当应用程序首次运行时,它会与远程 SFTP 站点目录同步到本地目录。但是,它无法获取远程 SFTP 目录文件中的任何后续更改。
计划轮询如下:
在which extends的afterReceive
方法中,第一次运行后我得到一个空结果。RetryCompoundTriggerAdvice
AbstractMessageSourceAdvice
如何配置同步器以使其定期同步(而不是在应用程序启动时仅同步一次)?
更新
我发现当 SFTP 站点在我的应用程序启动时其目录中没有文件时,会SftpInboundFileSynchronizer
在每个轮询间隔进行同步。com.jcraft.jsch
所以我可以在每次投票时看到日志语句。但是,一旦在 SFTP 站点上找到文件,它就会同步以在本地获取该文件,然后不再同步。
更新 2
抱歉……这是自定义代码:
java - Spring Integration 中的 REST 端点使消息传递通道成为多线程的
我有一个非常简单的 Spring Boot 应用程序,它提供了几个 restful 端点,这应该驱动一个 sftp 文件被上传到一个 sftp 服务器。我的要求是,如果有多个文件,则应将文件排队。我希望通过 sftp spring 集成工作流的默认行为来实现这一点,因为我读到 DirectChannel 会自动对文件进行排队。为了测试行为,我执行以下操作:
- 发送一个大文件,通过调用端点阻塞通道一段时间。
- 通过调用端点发送一个较小的文件。
预期结果:较小的文件被排队到通道上,并在较大的文件上传完成后处理。实际结果:与 sftp 服务器的新连接打开,较小的文件上传到那里而没有排队,而较大的文件继续传输。
我的应用程序中有两个文件:
DemoApplication.java
演示控制器.java
我是 spring 的完全新手,我不确定我的 sftp 频道是否在这里正确创建,我的猜测是每次我进行 sendToSftp 调用时都会创建一个新频道。在这种情况下如何实现队列行为的任何帮助将不胜感激。