spring-cloud-starter: stream-processor-tasklaunchrequest-transform 忽略本地 maven 设置

spring-cloud-starter: stream-processor-tasklaunchrequest-transform ignores local maven settings

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

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

用于启动我的本地数据流服务器和 DF Shell,然后注册我的应用程序并创建并部署流的命令如下:-

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

no main manifest attribute, in /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

现在有2点要提出:

  1. 日志中提到的 Maven 存储库位置是 MacOS 的默认位置,不是我本地 Maven 配置中的设置 (/Users/abc/myrepo/.m2/repository)
  2. 该错误适用于启动器应用程序的构建 jar 文件 - spring-cloud-starter-stream-processor-tasklaunchrequest-transform。如果需要任何自定义才能使其可运行并可用于我的流应用程序,这让我感到困惑。

我已经尝试将入门应用程序更改为可运行的 spring 启动应用程序,并在我的本地存储库中安装该版本,但除非该应用程序查看正确的本地存储库(而不是默认存储库),我用不了。

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

任何输入都会有所帮助。

Register apps - app register --name task-processor --type processor --uri maven://io.spring.cloud:taskprocessor:jar:1.1.0.BUILD-SNAPSHOT

据此,您正在注册示例 taskprocessor 应用程序。虽然尝试它没有任何问题,但我们建议使用 standardized application,如果其中有任何缺失的功能,请为它提交一个 GH 问题。

However the deploy of the stream is failing due to startup failure of the task-processor.

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

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

The maven repo location mentioned in the logs is default location for MacOS and not the one setup in my local maven configurations (/Users/abc/myrepo/.m2/repository)

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

The error is valid for the built jar file of starter app - spring-cloud-starter-stream-processor-tasklaunchrequest-transform. And that confuses me if any customisation is required to make it runnable and usable for my stream app

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

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