Spring Cloud Task for functional programming - 如何真正实现它?

Spring Cloud Task for functional programming - how really to achieve it?

我们需要在我们的私有 Cloud Foundry 堆栈上按照 FRP(类似于 AWS Lambda)开发按需应用程序。这是为了节省成本,否则总是 运行ning 低容量应用程序。

仅当消息出现在我们基于 JMS 的消息传递系统(例如 IBM MQ)上时,才需要 trigger/start 应用程序。作为一个低容量应用程序,它应该在所有其他时间保持停止状态。

基于对 Spring 文档的详细研究和搜索,在我看来,一个理想的解决方案是 triggers/start 我的微服务每当消息出现在源队列中时关闭它完成后,将需要以下组合:Spring Cloud Data Flow + Spring Cloud Stream + Spring Cloud Task 作为技术堆栈。

在各种示例中,以下组合看起来像是在本地机器上启动 PoC 所需的组合:

https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-samples/tasksink https://github.com/spring-cloud/spring-cloud-stream-samples/tree/master/sink https://github.com/spring-cloud/spring-cloud-dataflow/tree/master/spring-cloud-dataflow-server-local

但是我仍然不确定如何将其全部插入并取得结果。

已取得一些进展,但构建此解决方案的完整清晰度仍不清楚。

据我所知,我们似乎需要...

  1. 运行一个Spring云数据流服务器
  2. 运行 Spring 云数据流 Shell 或 UI
  3. 创建 Spring Cloud Stream 接收器应用程序并 运行 它(我们是否也需要在 Maven 中安装它?)
  4. 创建Spring Cloud Task 接收器应用程序并将其安装到 Maven Repo
  5. 我还需要创建一个 Spring 云任务吗?
  6. 注册模块(但这种情况下的模块是什么?)
  7. 在 DF 服务器中创建 Stream 并在其上部署
  8. 还有吗?

...实现结果。

有人可以帮我解决这个问题并建议是否遗漏了任何构建块?如果以上问题的答案已知。

我的理解也有任何差距,我是否足够正确地假设 @EnableTask 只会在触发时使我的应用程序 运行 并在其他情况下保持停止?

在选择 Spring Cloud Stream 与 Spring Cloud Task 应用程序时,您需要做出重要区分。

Spring Cloud Stream -> 事件驱动的长寿命微服务应用程序 Spring Cloud Task -> 运行 按需

的短期微服务应用程序

am I assuming it correctly enough that @EnableTask will make my application run only when triggered and keep it stopped otherwise

是的,但任务申请不是 stopped,而是 dies 在完成 运行 之后。

create Spring Cloud Stream sink application and run it (do we need to install it in Maven as well?)

不确定为什么需要接收器应用程序。您需要一个源应用程序来触发 TaskLaunchRequest 到接收器应用程序。您的源应用程序需要配置为从您的 JMS 代理程序接收导致触发器的消息。

create Spring Cloud Task sink application and install it in Maven Repo

这是启动您在 5 创建的任务的 Spring 云流 sink 应用程序。这就是一个 example。此应用程序是一个长期存在的应用程序,它会查找传入的 TaskLaunchRequests

do I need a Spring Cloud Task as well created?

是的,这是您想要 运行 按需执行的短期任务应用程序。