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,然后注册我的应用程序并创建并部署流的命令如下:-
- 安装 task-launcher
本地 Maven 中的应用程序 -
mvn clean install
- 安装 task-processor
本地 Maven 中的应用程序 -
mvn clean install
在本地 maven 中安装任务应用程序 - mvn clean install
构建本地数据流服务器 - mvn clean package
(将 remoteRepo 位置更改为我们的企业 maven 存储库)
启动本地 DF 服务器 - mvn spring-boot:run
构建数据流 Shell - mvn clean package
开始DF Shell - mvn spring-boot:run
使用 Rabbit 绑定导入开箱即用的入门应用程序 stream-applications-rabbit-maven
注册应用程序 -
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
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
但是,由于 任务处理器 启动失败,流部署失败。
处理器日志中记录的错误是:
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点要提出:
- 日志中提到的 Maven 存储库位置是 MacOS 的默认位置,不是我本地 Maven 配置中的设置 (/Users/abc/myrepo/.m2/repository)
- 该错误适用于启动器应用程序的构建 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
级别记录以进行故障排除。
在我的云流应用程序中,我使用 spring-cloud-starter-stream-processor-tasklaunchrequest-transform
入门应用程序作为任务处理器。
启动器在本地构建并安装在本地 Maven 存储库中。
用于启动我的本地数据流服务器和 DF Shell,然后注册我的应用程序并创建并部署流的命令如下:-
- 安装 task-launcher
本地 Maven 中的应用程序 -
mvn clean install
- 安装 task-processor
本地 Maven 中的应用程序 -
mvn clean install
在本地 maven 中安装任务应用程序 -
mvn clean install
构建本地数据流服务器 -
mvn clean package
(将 remoteRepo 位置更改为我们的企业 maven 存储库)启动本地 DF 服务器 -
mvn spring-boot:run
构建数据流 Shell -
mvn clean package
开始DF Shell -
mvn spring-boot:run
使用 Rabbit 绑定导入开箱即用的入门应用程序
stream-applications-rabbit-maven
注册应用程序 -
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
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
但是,由于 任务处理器 启动失败,流部署失败。 处理器日志中记录的错误是:
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点要提出:
- 日志中提到的 Maven 存储库位置是 MacOS 的默认位置,不是我本地 Maven 配置中的设置 (/Users/abc/myrepo/.m2/repository)
- 该错误适用于启动器应用程序的构建 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
级别记录以进行故障排除。