You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kogito Quarkus DRL项目容器环境规则扩展加载异常问题

解决Kogito Quarkus生产环境规则扩展未预加载的问题

核心原因

mvn quarkus:dev开发模式下,Kogito会在构建阶段就将DRL规则编译为Java字节码,启动后直接加载执行;而生产环境若配置不当,规则会延迟到第一次执行时才解析编译,导致首次执行速度骤降。

解决方案

1. 确保Kogito构建时处理器正常工作

检查pom.xml中是否引入了正确的Quarkus Kogito依赖,它会触发构建阶段的规则编译:

<dependency>
    <groupId>org.kie.kogito</groupId>
    <artifactId>kogito-quarkus</artifactId>
</dependency>

执行mvn package后,查看target/classes目录下是否生成了规则相关的编译类(如*Rule.class或Kogito自动生成的模型类),以此验证构建时编译是否完成。

2. 禁用规则延迟加载

在src/main/resources/application.properties中添加配置,强制启动时预加载所有规则:

kogito.rules.lazy-load=false

3. 规范Docker镜像构建流程

确保Docker镜像基于已完成构建的生产级Jar包生成,而非直接在镜像内编译。示例Dockerfile:

# 构建阶段:完成Maven打包(包含规则编译)
FROM maven:3.8.6-openjdk-17 AS builder
WORKDIR /project
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src src
# 生成uber-jar,明确生产模式
RUN mvn package -Dquarkus.package.type=uber-jar -DskipTests -Dquarkus.profile=prod

# 运行阶段:复制已构建好的Jar包
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=builder /project/target/*-runner.jar app.jar
CMD ["java", "-jar", "app.jar"]

4. 确认生产模式打包参数

打包时避免使用开发环境参数,明确指定生产profile:

mvn package -Dquarkus.profile=prod -Dquarkus.package.type=uber-jar

5. 检查规则文件路径配置

若DRL规则未放在默认的src/main/resources目录,需在application.properties中指定扫描路径,确保构建时处理器能找到规则:

kogito.rules.paths=rules/your-rule-directory/

内容的提问来源于stack exchange,提问作者Rob C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:48:30