在我的云流应用程序中,我已将spring-cloud-starter-stream-processor-tasklaunchrequest-transform
初学者应用程序用作任务处理器。
该启动器是本地构建的,并安装在本地Maven存储库中。
用于启动我的本地Dataflow Server和DF Shell,然后注册我的应用程序和create-cum-deploy流的命令如下: -
mvn clean install
mvn clean install
在本地专家中安装任务应用 - mvn clean install
构建Dataflow Server Local - 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
但是,由于任务处理器的启动失败,流的部署失败。 处理器日志中记录的错误是:
没有主要的清单属性,在/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
现在有两点要提出:
spring-cloud-starter-stream-processor-tasklaunchrequest-transform
。如果需要任何自定义使其可以运行并可用于我的流应用程序,那就会让我感到困惑。我已经尝试将初学者应用程序更改为可运行的spring boot应用程序,并将该版本安装在我的本地仓库中,但除非应用程序查看正确的本地仓库(而不是默认版本),否则我可以&#39 ;使用它。
我认为这是应用程序的一个问题,它缺乏本地maven设置的可见性,因此按默认值进行。
任何输入都会有所帮助。
答案 0 :(得分:1)
注册应用程序 - app register --name task-processor --type processor --uri maven://io.spring.cloud:taskprocessor:jar:1.1.0.BUILD-SNAPSHOT
根据这一点,您正在注册示例taskprocessor
应用程序。虽然尝试它没有错,但我们建议使用standardized application,如果有任何缺失的功能,请为此提交GH问题。
但是,由于任务处理器的启动失败,流的部署失败。
如果您实际上尝试使用标准化应用程序,那么您的应用程序注册命令应该是这样的:
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 repo位置是MacOS的默认位置,而不是我本地maven配置中的一个设置(/Users/abc/myrepo/.m2/repository)
SCDF使用Aether库来解析和下载maven工件。默认情况下,首先在本地maven存储库中检查所请求的应用程序,如果它不存在,则从远程存储库下载。这与任何其他maven工作流程没有什么不同。
该错误对于启动应用程序的构建jar文件有效 - spring-cloud-starter-stream-processor-tasklaunchrequest-transform。如果需要任何自定义使其可以运行并可用于我的流应用程序
,这会让我感到困惑
OOTB应用程序是实用程序。在大多数情况下,它们应该满足共同的要求。如果需要调整通用行为,则可以扩展它们。
话虽如此,也许您可以尝试通过java -jar
运行本地构建的应用程序来确认应用程序是否成功引导,然后将其注册到SCDF。您还可以在每个应用程序中enable DEBUG
级别日志进行故障排除。