0

我们需要在我们的私有 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

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

取得了一些进展,但构建此解决方案的完全清晰性仍不清楚。

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

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

...实现结果。

有人可以在这方面帮助我并建议这里是否遗漏了任何构建块?如果上述问题的答案是已知的。

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

4

1 回答 1

0

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

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

我是否正确地假设@EnableTask 将使我的应用程序仅在触发时运行,否则保持停止

是的,但任务应用程序不是在完成运行后stopped而是它。dies

创建 Spring Cloud Stream sink 应用程序并运行它(我们是否也需要在 Maven 中安装它?)

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

创建 Spring Cloud Task sink 应用程序并将其安装在 Maven Repo 中

这是启动您在 5 时创建的任务的 Spring Cloud 流sink应用程序。这是一个这样的示例。这个应用程序是一个长期存在的,它寻找传入TaskLaunchRequest的 s

我还需要创建一个 Spring Cloud Task 吗?

是的,这是实际的任务应用程序,它是您希望按需运行的短期应用程序。

于 2016-10-27T12:20:27.623 回答