20.2. OptaWeb Vehicle Routing 后端模块
backend 模块包含一个服务器端应用程序,它使用 OptaPlanner 优化载体路由。优化是一个 CPU 密集型计算,必须避免任何 I/O 操作才能对其完整潜在的执行。由于其中一个目标是最大程度降低往返成本,无论是时间还是距离,OptaWeb Vehicle 路由会使传输成本信息保留在 RAM 内存中。OptaPlanner 需要了解用户输入的每一个位置之间的旋转成本。此信息存储在名为 距离列表的结构中。
当您输入新位置时,OptaWeb Vehicle Routing 会计算新位置和目前输入的所有其他位置之间的旋转成本,并将传输成本存储在距离列表中。旋转成本计算由 GraphHopper 路由引擎执行。
后端模块实现以下额外功能:
- Persistence
- 前端的 websocket 连接
- 数据集加载、导出和导入
要了解更多有关后端代码架构的信息,请参阅 第 21 章 optaweb Vehicle Routing 后端架构。
下一节介绍了如何在开发模式下配置和运行后端。
20.2.1. 运行 OptaWeb Vehicle Routing 后端模块 复制链接链接已复制到粘贴板!
您可以在 Quarkus 开发模式下运行后端模块。
先决条件
- 配置了 optaweb Vehicle Routing,如 第 17 章 手动配置和运行 OptaWeb Vehicle Routing 所述。
流程
-
将目录改为
rhbop-8.29.0-kogito-and-optaplanner-quickstarts/optaweb-8.29.0.Final-redhat-00009/optaweb-vehicle-routing/optaweb-vehicle-routing-backend
。 要在开发模式下运行后端,请输入以下命令:
mvn compile quarkus:dev
mvn compile quarkus:dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用 IntelliJ IDEA Ulitmate 运行 OptaWeb Vehicle Routing 后端模块,以便更轻松地开发您的项目。IntelliJ IDEA Ultimate 包含一个 Quarkus 插件,它为使用 Quarkus 框架的模块自动创建运行配置。
流程
使用 optaweb-vehicle-routing-backend 运行配置来运行后端。
其他资源
如需更多信息,请参阅 运行 Quarkus 应用程序。
20.2.3. Quarkus 开发模式 复制链接链接已复制到粘贴板!
在开发模式中,如果更改了后端源代码或配置,并且您刷新前端运行的浏览器标签页,后端会自动重启。
了解有关 Quarkus 开发模式 的更多信息。
20.2.4. 更改 OptaWeb Vehicle Routing 后端模块系统属性值 复制链接链接已复制到粘贴板!
您可以临时或永久覆盖 OptaWeb Vehicle Routing 后端模块的默认系统属性值。
OptaWeb Vehicle Routing 后端模块系统属性存储在 /src/main/resources/application.properties
文件中。此文件在版本控制下。使用它永久存储默认配置属性值,并定义 Quarkus 配置集。
先决条件
- OptaWeb Vehicle Routing starter 应用已下载并提取。有关详情请参考 第 15 章 下载并构建 OptaWeb Vehicle Routing 部署文件。
流程
要临时覆盖默认系统属性值,在运行
mvn
或java
命令时包括-D<PROPERTY>=<VALUE
> 参数,其中 <PROPERTY
> 是您要更改的属性值,<VALUE
> 是您要临时分配给该属性的值。以下示例演示了如何在使用 Maven 在dev
模式中编译 Quarkus 项目时,如何将quarkus.http.port
系统属性的值临时改为8181
:mvn compile quarkus:dev -Dquarkus.http.port=8181
mvn compile quarkus:dev -Dquarkus.http.port=8181
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会临时更改存储在
/src/main/resources/application.properties
文件中的属性值。要永久更改配置值,例如存储特定于您的开发环境的配置,请将
env-example
文件的内容复制到optaweb-vehicle-routing-backend/.env
文件中。此文件不包括在版本控制中,因此在克隆存储库时不存在该文件。您可以在
.env
文件中进行更改,而不影响 Git 工作树。
其他资源
有关 OptaWeb Vehicle Routing 配置属性的完整列表,请参阅 第 22 章 optaweb Vehicle Routing 后端配置属性。
20.2.5. optaweb Vehicle Routing 后端日志记录 复制链接链接已复制到粘贴板!
optaweb Vehicle Routing 使用 SLF4J API 和 Logback 作为日志记录框架。如需更多信息,请参阅 Quarkus - 配置日志记录。