当 server.port 属性在 master 的应用程序属性文件中设置时,Spring Cloud Deployer Local 无法启动工作远程分区

问题描述

我正在尝试在 application.properties 文件中配置了 server.port=8080 属性的现有应用程序中构建批处理服务。当我运行批处理和 Spring Batch 尝试启动远程分区(单独的 JVM)时,spring cloud deployer local 抛出错误说 "\r\n\r\n****************************\r\n应用程序启动失败\r\n*** ************************\r\n\r\n说明:\r\n\r\n配置为侦听端口 8080 的 Tomcat 连接器失败启动。端口可能已在使用中,或者连接器可能配置错误。\r\n\r\n操作:\r\n\r\n验证连接器的配置,识别并停止正在侦听端口 8080 的任何进程,或将此应用程序配置为侦听另一个端口。

有没有办法让框架为工作分区生成随机端口,即已经在 application.properties 中配置的 server.port 属性

谢谢。

解决方法

Spring Batch 远程分区设置需要用于管理器和工作器之间通信的消息代理,但它不需要任何 Web 功能。您似乎将所有应用本地(管理器和工作器)部署为网络应用程序,因此在部署多个工作器时会发生端口冲突。

您至少有两个选择:

  • 为每个应用程序设置一个随机服务器端口(了解 Spring Boot 如何让您做到这一点here
  • 或者,如果工作人员的数量是固定的,则静态地将端口设置为不同的值。