0

在我的云流应用程序中,我将spring-cloud-starter-stream-processor-tasklaunchrequest-transform启动应用程序用作任务处理器。

启动器在本地构建并安装在本地 Maven 存储库中。

用于启动我的本地 Dataflow Server 和 DF Shell,然后注册我的应用程序并创建兼部署流的命令如下:-

  • 在本地 maven 中安装任务启动器应用程序 -mvn clean install
  • 在本地 maven 中安装任务处理器应用程序 -mvn clean install
  • 在本地 maven 中安装任务应用程序 -mvn clean install

  • 在本地构建 Dataflow Server - mvn clean package(将 remoteRepo 位置更改为我们的企业 maven 存储库)

  • 本地启动 DF 服务器 -mvn spring-boot:run

  • 构建数据流外壳 -mvn clean package

  • 启动 DF Shell -mvn spring-boot:run

  • 使用 Rabbit 绑定导入开箱即用的启动应用程序stream-applications-rabbit-maven

  • 注册应用程序 -

    1. app register --name task-processor --type processor --uri maven://org.springframework.cloud.stream.app:spring-cloud-starter-stream-processor-tasklaunchrequest-transform:jar:1.1.0.BUILD-SNAPSHOT
    2. app register --name task-launcher-local --type sink --uri maven://org.springframework.cloud.stream.app:task-launcher-local-sink-rabbit:jar:1.0.4.RELEASE
  • 创建流 - stream create foo --definition "rabbit --rabbit.queues=cloud-stream-source --rabbit.requeue=true --spring.rabbitmq.host=localhost --spring.rabbitmq.port=5672 --spring.cloud.stream.bindings.output.contentType='text/plain' | task-processor --uri=maven://com.example:thumbnail-generator:0.0.1-SNAPSHOT | task-launcher-local" --deploy

但是,由于task-processor的启动失败,流的部署失败。处理器日志中记录的错误是:

没有主要清单属性,在 /Users/abc/.m2/repository/org/springframework/cloud/stream/app/spring-cloud-starter-stream-processor-tasklaunchrequest-transform/1.1.0.BUILD-SNAPSHOT/spring- cloud-starter-stream-processor-tasklaunchrequest-transform-1.1.0.BUILD-SNAPSHOT.jar

现在有两点需要提高:

  1. 日志中提到的 maven 存储库位置是 MacOS 的默认位置,而不是我本地 maven 配置中的一个设置 (/Users/abc/myrepo/.m2/repository)
  2. 该错误对starter app的内置jar文件有效 - spring-cloud-starter-stream-processor-tasklaunchrequest-transform. 如果需要进行任何自定义以使其可运行且可用于我的流应用程序,这让我感到困惑。

我尝试将启动应用程序更改为可运行的 Spring Boot 应用程序,并将该版本安装在我的本地存储库中,但除非应用程序查看正确的本地存储库(而不是默认存储库),否则我无法使用它。

我相信这是应用程序的一个问题,它缺乏本地 Maven 设置的可见性,因此采用默认值。

任何输入都会有所帮助。

4

1 回答 1

1

注册应用程序-应用程序注册--名称任务处理器--类型处理器--uri maven://io.spring.cloud:taskprocessor:jar:1.1.0.BUILD-SNAPSHOT

据此,您正在注册示例taskprocessor应用程序。虽然尝试它并没有错,但我们建议使用标准化的应用程序,如果其中缺少任何功能,请为它提交 GH issue。

然而,由于任务处理器的启动失败,流的部署失败。

如果您实际上是在尝试使用标准化应用程序,那么您的应用程序注册命令应该类似于:

app register --name task-processor --type processor --uri maven://org.springframework.cloud.stream.app:tasklaunchrequest-transform-processor-rabbit:1.1.0.BUILD-SNAPSHOT  --force

日志中提到的 maven 存储库位置是 MacOS 的默认位置,而不是我本地 maven 配置中的一个设置 (/Users/abc/myrepo/.m2/repository)

SCDF 使用 Aether 库来解析和下载 maven 工件。默认情况下,首先在本地 maven 存储库中检查请求的应用程序,如果不存在,则从远程存储库下载。这与任何其他 Maven 工作流程没有什么不同。

该错误适用于starter app的构建jar文件-spring-cloud-starter-stream-processor-tasklaunchrequest-transform。如果需要进行任何自定义以使其可运行并可用于我的流应用程序,这让我感到困惑

OOTB 应用程序是实用程序应用程序。在大多数情况下,它们应该满足共同的要求。如果需要调整通用行为,您可以扩展它们。

话虽如此,也许您可​​以尝试通过运行本地构建java -jar的应用程序来确认应用程序是否成功引导,然后将其注册到 SCDF。您还可以在每个应用程序上启用 DEBUG级别日志以进行故障排除。

于 2016-11-04T21:35:51.643 回答