架构
路由重新加载
登录后可跨设备保存划线和私人笔记登录
路由重新加载
Camel 中的路由重新加载功能可以监视某个目录中的文件变化,然后自动触发 Camel 应用程序中正在运行的路由重新加载。
此功能仅用于开发目的,不建议在生产环境中使用。
| 使用 Camel Quarkus 时不支持此功能,因为您应该改用 Quarkus 自带的热重新加载功能。该功能还可以重新加载 Java 源代码的更改以及更多内容。 |
|---|
使用路由重新加载
您无法监视 Java 类路径中的文件变化。只能监视文件系统中的文件变化(即使用 file 而不是 classpath)。
路由重新加载可以通过以下方式在 Java 中或使用 Spring Boot、Quarkus 进行配置:
- Java
- 应用属性
CamelContext context = ...
RouteWatcherReloadStrategy reload = new RouteWatcherReloadStrategy();
reload.setFolder("myfolder/routes");
reload.setPattern("*.xml");
context.addService(reload);而使用 Spring Boot、Quarkus 和独立运行方式时,你可以在 application.properties 中配置这些内容:
# turn on route reloading on file changes
camel.main.routes-reload-enabled = true
# the base directory to watch
camel.main.routes-reload-directory = myfolder/routes
# pattern(s) for files to watch
camel.main.routes-reload-pattern = *.xml路由重载选项
你可以使用以下选项配置 RouteWatcherReloadStrategy:
| 名称 | 描述 | 默认值 | 类型 |
|---|---|---|---|
routesReloadDirectory | 用于扫描路由更改的目录。Camel 无法扫描 classpath,因此必须将其配置为文件目录。使用 Maven 作为构建工具进行开发时,可以将该目录配置为 src/main/resources,以扫描 XML 或 YAML 文件中的 Camel 路由。 | src/main/resources/camel | String |
routesReloadDirectoryRecursive | 扫描的目录是否应包含子目录。子目录的数量可能会影响 JVM 的启动速度,因为 Camel 使用 JDK 的文件监视服务来扫描文件更改。 | false | boolean |
routesReloadEnabled | 用于启用路由自动重新加载。启用后,Camel 将监视给定重新加载目录中的文件更改,并在文件发生变化时触发路由重新加载。 | false | boolean |
routesReloadPattern | 用于对目录中的路由进行包含性过滤。通常用于指定接受 XML 或 YAML 文件中的路由。默认模式为 *.yaml,*.xml,多个模式可以用逗号分隔指定。 | *.yaml,*.xml | String |
routesReloadRemoveAllRoutes | 重新加载路由时,是否应停止并移除所有现有路由。默认情况下,Camel 会在重新加载路由之前停止并移除所有现有路由,以确保只有重新加载的路由处于活动状态。如果禁用,则只会更新具有相同路由 ID 的路由,现有其他路由将继续运行。 | true | boolean |
必须使用路由 ID
使用路由重载时,建议为路由指定 id,这样 Camel 就能确切知道哪些路由已被更新。这是必要的,因为 Apache Camel 必须先停止正在运行的现有路由,才能对其进行更新。
而添加新路由则是可行的,因为新路由会指定新的唯一路由 id。
资源文件的热重载
除了重新加载路由之外,当 routesReloadEnabled=true 时,Camel 还会禁用基于资源的组件(例如 xslt)的 contentCache 选项,该选项默认为 true。这样,对资源文件的修改会在下一条消息时生效,而无需重启路由。
用户属性(例如 camel.component.xslt.contentCache=true)以及显式的端点/URI 设置始终会被尊重:即使启用了路由重载,也可以设置 contentCache=true 以继续缓存。
另请参阅
参阅相关的上下文重载。
参阅以下启用了热重载功能的示例:
评论
登录后参与评论
正在加载评论…
KnowForge