【问题标题】:Spring Integration - FTP is not working with OpenShiftSpring Integration - FTP 不适用于 OpenShift
【发布时间】:2016-05-31 14:13:44
【问题描述】:

我使用Spring Integration FTP 将文件从 FTP 服务器复制到本地并进行处理。使用 Spring Boot 和 Spring Integration 在本地运行良好,但我已经在 OpenShift 中部署了应用程序,但它不是在寻找 FTP 文件。

例如:

In local FileReadingMessageSource is getting invoked
[task-scheduler-5] o.s.i.file.FileReadingMessageSource : Created message: [GenericMessage [payload=file-temp\abcd.xml, headers={id=30e5289a-aba6-19db-1d81-3036fca251b0, timestamp=1464675579294}]]

但它不会在 OpenShift 中调用。它是否需要任何特殊配置才能工作?

【问题讨论】:

  • 不需要什么特别的;也许是防火墙问题?我建议你打开 DEBUG 日志记录。
  • @GaryRussell 防火墙的配置与本地配置相同,记录器已经开启。在 spring boot 应用程序启动后,它应该开始复制文件,但它没有复制文件。
  • “不复制文件”只是信息不足。如果您没有看到该消息,则没有找到文件。如果你启用了调试日志并且你没有看到任何轮询活动(例如Received no Message...),那么这意味着轮询器没有启动或者线程卡在某个地方——很可能是试图连接。您需要使用您的调试技能 - 使用 jstack、visualvm 等进行线程转储,并找出轮询线程在做什么。
  • @Bean(name = PollerMetadata.DEFAULT_POLLER) public PollerMetadata defaultPoller() { PollerMetadata pollerMetadata = new PollerMetadata(); pollerMetadata.setTrigger(new PeriodicTrigger(100));返回轮询元数据; } @ServiceActivator(inputChannel = "inputChannel") public void transferFilesFromFTP(File payload) { process(payload); @GaryRussell - 谢谢 Gary,我已经使用了上面的代码,问题是在部署的应用程序中,在处理父进程后,子线程没有得到处理 [task-scheduler] 调试后,线程没有被调用。
  • 不要把代码放在cmets中;如您所见,它完全不可读。删除这些 cmets 并改为编辑问题(格式化代码)。如果你想让人们帮助你,你必须给他们一些合理的工作。如果它在一个环境中工作而不在另一个环境中工作,则可能是环境问题而不是 Spring 集成问题;您需要使用日志进一步调试它。比较一个环境与另一个环境的调试日志。如果这样做之后您怀疑框架有问题,请提供此类证据。

标签: openshift spring-integration openshift-origin openshift-cartridge openshift-enterprise


【解决方案1】:

根据 Linux 团队,OpenShift 不支持 FTP 客户端,并且无法在 OpenShift 中使用 Spring Integration 运行 FTP。

【讨论】:

  • 我知道这已经过时了,但是是否有任何其他信息说明为什么这不起作用,如果有解决方法,以及如果您需要通过 ftp 访问文件的替代方法是什么?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多