Spring boot 如何通过Azure函数/Spring云函数调用Spring集成SFTP
我们目前有Spring引导应用程序,它们使用Spring集成SFTP根据Cron时间表发送和接收文件。我们正在尝试使用SpringCloud函数将应用程序转换为Azure函数。只是想知道,当应用程序收到来自Azure函数的http调用时,有没有办法调用Spring Integration SFTP适配器只运行一次?从SpringIntegration的文档来看,轮询器的唯一选项似乎是Cron或固定速率/固定延迟。提前感谢您的帮助或建议 我想知道您是否可以只在一个触发器上添加Spring boot 如何通过Azure函数/Spring云函数调用Spring集成SFTP,spring-boot,azure-functions,spring-integration,spring-cloud-function,Spring Boot,Azure Functions,Spring Integration,Spring Cloud Function,我们目前有Spring引导应用程序,它们使用Spring集成SFTP根据Cron时间表发送和接收文件。我们正在尝试使用SpringCloud函数将应用程序转换为Azure函数。只是想知道,当应用程序收到来自Azure函数的http调用时,有没有办法调用Spring Integration SFTP适配器只运行一次?从SpringIntegration的文档来看,轮询器的唯一选项似乎是Cron或固定速率/固定延迟。提前感谢您的帮助或建议 我想知道您是否可以只在一个触发器上添加而不是cron或fix
而不是cron或fixed
它的代码可能是这样的:
public class OnlyOnceTrigger implements Trigger {
private final AtomicBoolean hasRun = new AtomicBoolean();
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
if (this.hasRun.getAndSet(true)) {
return null;
}
return new Date();
}
}
另一方面,由于您有一个类似于HTTP调用的事件的触发器,所以您应该考虑使用<代码> SFFTPoObjultGuest而不是使用<代码>获取<代码> >或代码> Ls<代码>命令:
谢谢ARTEM。我们的目标是尽量减少对现有代码的修改。但是,我们将按照您的建议尝试这两种方法。真的很感激!是 啊由于只有HTTP触发器这样的限制,它不会“尽可能少”:您肯定需要以这种或其他方式进行调整。MessageSource
的要点是它不依赖于任何事件,可以根据轮询器配置定期执行操作。您所拥有的HTTP函数完全不适合轮询器模型,否则就不适合了。这就是为什么我建议使用网关方法来与函数签名保持一致。