问题标签 [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.

0 投票
1 回答
523 浏览

spring-cloud - 使用spring cloud数据流时sftp source starter app file_name header is not found

spring cloud dataflow sftp source starter app声明文件名应该在标题mode=contents)中。但是,当我将此源连接到日志接收器时,我会看到一些标头(如Content-Type),但看不到file_name标头。我想使用此标头将文件上传到具有相同名称的 S3。

春天服务器:Spring Cloud Data Flow Local Server (v1.2.3.RELEASE)

我的应用程序都是从这里导入的

流定义: stream create --definition "sftp --remote-dir=/incoming --username=myuser --password=mypwd --host=myftp.company.io --mode=contents --filename-pattern=preloaded_file_2017_ --allow-unknown-keys=true | log" --name test_sftp_log

将日志应用程序配置为--expression=#root --level=debug没有任何区别。此外,编写我自己的接收器尝试访问file_name标头我收到一条错误消息,指出此类标头不存在

来自源和接收器的日志片段在这个要点中

0 投票
1 回答
961 浏览

spring - 在运行时设置多个入站通道适配器

使用 spring-integration-sftp,创建任意数量的入站通道适配器对象的推荐方法是什么?我的应用程序需要监视多个远程目录(1 到 n),直到运行时才知道。

0 投票
1 回答
2089 浏览

mule - MuleSoft ESB——空指针异常

我正在尝试通过 MULE 连接 SFTP 服务器。但它正在抛出 NULL_POINTER_EXCEPTION。这是我的 XML,

请提出您的建议以避免此错误!

错误堆栈跟踪:

0 投票
1 回答
1080 浏览

spring-integration - 如何在 java-spring 集成中的 sftp 出站网关中设置远程目录

使用上面的 xml,我可以发送文件并得到回复。在java中,如何在SftpOutboundGateway中设置远程目录。如果我使用SftpMessageHandler,是否有可能得到回复。注释代码正在传输文件但没有回复。

谢谢你的帮助。

0 投票
1 回答
562 浏览

spring-boot - 弹簧集成最大获取大小信息

我们希望将 spring boot 1.5.8 与 spring integration 5.x 一起使用,因为它具有一个用于 sftp 入站通道适配器的属性(max-fetch-size),它允许您控制 no。从 sftp 服务器本地下载的文件数量。是否可以将 spring integration 5.x 与 spring boot 1.5.8 一起使用?

我不能在生产中使用 spring boot 2.0 M7 版本,因为我们公司不允许使用它,而且 spring boot 2.x 还没有发布,我们必须在 3 月份投入生产,我们需要解决方法。

如果这是不可能的,我如何使用 spring integration 4.x 版本实现 max-fetch-limit?

0 投票
1 回答
760 浏览

java - 是否可以动态更改入站通道适配器的文件名正则表达式

在我们的应用程序中,有大量文件从远程机器下载到本地机器(运行代码的服务器)。我们选择使用 Spring SFTP 进行下载。我们仍处于发展过程中。

当用户选择一个文件并单击 UI 中的一个按钮下载该文件时,就会启动下载过程。同一时间,多个用户可能会选择不同的文件并将它们从远程机器下载到本地机器(运行代码的服务器)。对于所有下载请求,远程机器(以及下载路径)和本地机器(以及下载文件的路径)都是相同的,只是文件名不同。

在下面的代码中,我在 int-sftp:inbound-channel-adapter 中设置了 filename-regex。问题是文件名正则表达式是静态的。我需要动态设置文件名正则表达式。因为每个用户将下载不同的文件。我不能在文件名正则表达式中使用正则表达式,因为只需要下载选定的文件。

是否可以动态设置。我必须对我的代码进行哪些更改才能做到这一点。欢迎所有建议。提前致谢。

下面是我在 main 方法中的 java 代码。

已使用此链接作为我的参考 - https://github.com/spring-projects/spring-integration-samples/tree/master/basic/sftp


根据 Artem Bilan 给出的答案发布配置以使其工作。

Java代码:

0 投票
1 回答
726 浏览

java - 如何验证使用 Spring SFTP 下载的文件的校验和

在我们的应用程序中,有大量文件从远程机器下载到本地机器(运行代码的服务器)。我们选择使用 Spring SFTP 进行下载。使用下面的代码,我可以将文件从远程机器下载到本地。

Java 代码

上面的代码按预期工作。它下载远程文件,然后将其删除。我们已经有了下载文件的校验和。这个校验和是从远程文件计算出来的。是否可以建立一种机制来计算文件下载后的校验和。我们需要能够将预期校验和与接收到的文件的校验和进行比较,如果不匹配,则重试固定次数。

我想知道我是否可以RetryTemplate像下面这样使用。这是未经测试的伪代码。

我的问题是如何让我的方法 foo() 在文件下载完成后执行。是否也可以在 foo() 中获取下载的文件名。

0 投票
1 回答
277 浏览

spring - 使用 sftp 出站网关下载文件后,使用下载的文件名调用 bean 方法

我正在使用int-sftp:outbound-gateway下载远程文件。文件下载正在运行。我需要在文件下载成功和失败后调用另一种方法。在该方法中,我需要状态(成功或失败)和请求下载的文件的名称。然后通过该方法,我将根据状态(例如将文件移动到不同位置、通知用户、发送电子邮件等)启动后下载流程。

我曾经AfterReturningAdviceInterceptor调用我自己定义的方法在MyAfterReturningAdvice其中实现AfterReturningAdvice接口。有了这个我的方法来启动后下载流程。它确实执行了,我确实在 GenericMessage 的有效负载中获取了文件名。我的问题是,我们有没有更好的方法来实现这个流程。

我尝试使用ExpressionEvaluatingRequestHandlerAdvice's onSuccessExpression 但我无法调用其他方法。我所能做的就是操纵 inputMessage(GenericMessage 实例)。

在未来的冲刺中,我会将下载文件的校验和与预期的校验和进行比较,如果校验和不匹配,则重新下载文件固定次数。一旦校验和匹配,我再次需要调用下载后流程。如果即使最后重试下载也失败了,那么我需要调用另一个流程(发送电子邮件、更新数据库、通知用户失败等)我问这个问题只是为了确保我当前的实现符合总体要求。

0 投票
1 回答
361 浏览

java - Spring集成入站通道适配器中的覆盖方法

我有一个 Spring Integration 侦听器,其中ApplicationContext内容如下:

在 Spring 集成侦听器中,我希望每次都要求侦听器重新扫描文件夹。所以我这样做:

我将值设置scanEachPoll为true,这样每次它都会重新扫描目录。它的工作,我看到它每次都扫描目录。默认情况下它是假的。

在类中编辑变量FileReadingMessageSource不是问题。但是我在编辑这个类中的方法时遇到了一些问题。

在这个类中会有一个方法如下:

因为我的修改,这个监听器每次都会扫描目录。因此,toBeReceived.addAll(freshFiles);将继续添加一些相同的文件。我希望做一些事情来覆盖这个方法,这样我就可以toBeReceived先清理队列了addAll()

我相信FileReadingMessageSource类来自bp-integration-fileupload-context.xml.

任何我可以“注入”到这个 xml 部分来覆盖原始FileReadingMessageSource类的东西?

或者请建议更好的方法。

也许我的问题令人困惑,让我在这里添加一些示例:

实际上它是这样的:

原始版本:

scanEachPoll 默认为 false。

所以,scanInputDirectory() 方法不会每次都被调用。它只会在队列为空时调用。

但是现在,我将 scanEachPoll 更改为 true。(这个很容易改变)

当 scanEachPoll 为 true 时,每次都会调用 scanInputDirectory() 方法,所以它类似于:

第一次扫描,加入队列 (1,2,3,4,5) poll(),成为 (2,3,4,5) 第二次扫描,加入队列将是 (2,3,4,5) + (2,3,4,5) => 变成 (2,2,3,3,4,4,5,5) poll(), 变成 (2,3,3,4,4,5,5)第三次扫描,加入队列会变成原来的队列 + (3,4,5) ==> 变成 (2,3,3,4,4,5,5,3,4,5) 以此类推...

0 投票
1 回答
577 浏览

spring-boot - Spring Integration:如何访问上一个订阅者的返回值

我正在尝试实现 2 个文件的 SFTP 文件上传,该文件必须按特定顺序进行 - 首先是一个 pdf 文件,然后在成功上传一个包含有关 pdf 的元信息的文本文件之后。

我遵循了线程中的建议,但无法使其正常工作。

我的 Spring Boot 配置:

我的测试用例:

从网关上传调用的返回,我希望得到确认上传的字符串,例如“文件的 SFTP 传输完成:...”,但我得到了上传文件的返回内容,以字节 [] 表示:

我错过了什么?