我们需要在我们的私有 Cloud Foundry 堆栈上按照 FRP(类似于 AWS Lambda)的方式开发按需应用程序。这是为了节省成本,否则总是运行低容量的应用程序。
仅当消息出现在我们的基于 JMS 的消息传递系统(例如 IBM MQ)上时,才需要触发/启动应用程序。作为低容量应用程序,它应该在所有其他时间保持停止。
根据对 Spring 文档的详细研究和搜索,在我看来,每当消息出现在源队列上时触发/启动我的微服务并在完成后将其关闭的理想解决方案将需要以下组合: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
但是,我仍然不确定如何将其全部插入并取得结果。
取得了一些进展,但构建此解决方案的完全清晰性仍不清楚。
据我所知,我们似乎需要...
- 运行 Spring Cloud DataFlow 服务器
- 运行 Spring Cloud DataFlow Shell 或 UI
- 创建 Spring Cloud Stream sink 应用程序并运行它(我们是否也需要在 Maven 中安装它?)
- 创建 Spring Cloud Task sink 应用程序并将其安装在 Maven Repo 中
- 我还需要创建一个 Spring Cloud Task 吗?
- 注册模块(但是这种情况下的模块是什么?)
- 在 DF Server 中创建 Stream 并在其上部署
- 更多的东西?
...实现结果。
有人可以在这方面帮助我并建议这里是否遗漏了任何构建块?如果上述问题的答案是已知的。
我的理解也有任何差距,我是否足够正确地假设它@EnableTask
会使我的应用程序仅在触发时运行并保持它在其他情况下停止?