【问题标题】:spring-cloud-starter: stream-processor-tasklaunchrequest-transform ignores local maven settingsspring-cloud-starter:stream-processor-tasklaunchrequest-transform 忽略本地 maven 设置
【发布时间】:2017-03-18 06:50:06
【问题描述】:

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

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

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

  • 安装task-launcher 本地 maven 中的应用程序 - mvn clean install
  • 安装task-processor 本地 maven 中的应用程序 - mvn clean install
  • 在本地 maven 中安装任务应用 - mvn clean install

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

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

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

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

  • 通过兔子绑定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

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

没有主要清单属性,在 /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 设置的可见性,因此采用默认值。

任何输入都会有所帮助。

【问题讨论】:

    标签: maven-3 spring-cloud-stream spring-cloud-dataflow


    【解决方案1】:

    注册应用 - 应用注册 --name task-processor --type processor --uri maven://io.spring.cloud:taskprocessor:jar:1.1.0.BUILD-SNAPSHOT

    据此,您正在注册示例taskprocessor 应用程序。虽然尝试它并没有错,但我们建议使用standardized application,如果其中缺少任何功能,请为此提交 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。您还可以在每个应用程序上enableDEBUG 级别日志进行故障排除。

    【讨论】:

    • According to this, you're registering the sample taskprocessor application- 这是我在帖子中输入错误命令的错误。编辑帖子以表明我确实使用了您提到的标准化应用程序。
    • @sabbyanadan - 感谢建议的替代命令来注册应用程序 - app register --name task-processor --type processor --uri maven://org.springframework.cloud.stream.app:tasklaunchrequest-transform-processor-rabbit:1.1.0.BUILD-SNAPSHOT。那是我使用中的错误。这样,流现在已成功部署。但这给我留下了一些问题。 1)这种依赖来自哪里?无法在 Github 上找到它的代码库。并且 2) 我可以假设我原来的帖子中的第 1 步和第 2 步安装标准化应用程序不再需要了吗?
    • 请记住,SCDF 服务器实现没有预加载 app-registry;您必须注册您的用例所需的应用程序。如果您更喜欢上传所有应用程序,我们会提供批量导入链接以方便使用。也就是说,tasklaunchreque‌​st-transform-process‌​or 是最近添加的,因此它不包含在现有的批量导入链接中。在下一个 app-starters 发布之前,您必须手动注册它,其中将包含一个新的批量导入链接。
    • @sabbyanadan : Please keep in mind that the SCDF server implementations do not come pre-loaded with app-registry - 我完全理解这一点,并且在过去几周的所有 PoC 阶段都学到了这一点 :-) 我只是愿意掌握 @ 的代码库987654332@ 看看它到底在做什么。有没有你可以分享的 Git 网址?
    • 这是all it。实际的tasklaunchreque‌​st-transform-process‌​or-rabbit 应用程序包括此逻辑和rabbit-binder 作为依赖项。这个应用程序是由我们的构建过程“生成”的。
    猜你喜欢
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多