用途
Quarkus 3.x LTS 架构模式技能,用于构建云原生、事件驱动的 Java 服务,结合 Apache Camel 实现消息传递。适用于以下场景:
- 使用 JAX-RS 或 RESTEasy Reactive 构建 REST API
- 组织资源 → 服务 → 仓储(resource → service → repository)分层结构
- 使用 Apache Camel 与 RabbitMQ 实现事件驱动模式
- 配置 Hibernate Panache、缓存或响应式流
- 添加校验、异常映射或分页
- 为 dev/staging/production 环境设置配置档案(YAML 配置)
- 使用 LogContext 与 Logback/Logstash encoder 自定义日志
- 使用 CompletableFuture 进行异步操作
- 实现条件流处理
- 使用 GraalVM 原生编译
主要能力
服务层与多依赖注入
使用 @Slf4j、@ApplicationScoped、@RequiredArgsConstructor 注解,通过 Lombok 进行构造器注入。在写入 Panache 或仓储的服务方法上使用 @Transactional。在持久化或消息发布前校验输入,并对成功/错误场景进行事件跟踪,支持异步 Camel 消息发布。
自定义日志上下文(Logback)
通过 CustomLog.getCurrentContext() 获取日志上下文,使用 CustomLog.startScope(logContext) 开启作用域,向上下文中放入 documentId、documentType、userId 等字段,作用域内所有日志语句自动继承该上下文。Logback 配置使用 net.logstash.logback.encoder.LogstashEncoder,启用 includeContext 与 includeMdc。
事件服务模式
EventService 提供 createSuccessEvent 与 createErrorEvent 方法,将事件类型、状态、负载(JSON 序列化)、时间戳持久化到事件仓储,并记录日志。错误事件要求错误消息非空。
Camel 消息发布(RabbitMQ)
通过 ProducerTemplate.sendBody 向 direct: 端点发送消息,路由使用 marshal().json(JsonLibrary.Jackson) 序列化后发送到 spring-rabbitmq: 端点,队列名、主机、端口通过 @ConfigProperty 注入。
Camel 直接路由(内存)
使用 onException 处理异常,from("direct:...") 定义路由,通过 .bean() 调用校验器与转换器,使用 .choice().when().otherwise() 实现条件分支。
Camel 文件处理
使用 file: 端点监控输入目录,配置 move(处理后目录)、moveFailed(失败目录)与 delay 参数。
Camel Bean 调用
在路由中通过 .bean(Class.class, "method") 调用服务方法,支持在方法名中传入参数表达式,如 createSuccessEvent(${body}, 'PUBLISHED')。
REST API 结构
使用 @Path、@Produces、@Consumes 定义资源类,通过 @QueryParam 与 @DefaultValue 处理分页参数,@Valid 校验请求体,@Context UriInfo 构建创建资源的 Location 头,返回 Response 对象。
仓储模式(Panache Repository)
实现 PanacheRepository<T>,使用 find、page、list、firstResultOptional、count 等方法进行查询与分页。
服务层事务
在服务方法上使用 @Transactional,通过仓储 persist 持久化实体,并调用事件服务记录事件。
DTO 与校验
使用 Java record 定义请求与响应 DTO,结合 @NotBlank、@Size、@NotNull、@FutureOrPresent、@NotEmpty 等 Bean Validation 注解。
异常映射
实现 ExceptionMapper<ConstraintViolationException> 将校验异常映射为 400 响应,实现 ExceptionMapper<Exception> 将未处理异常映射为 500 响应,返回结构化错误信息。
CompletableFuture 异步操作
使用 CompletableFuture.supplyAsync 配合 ExecutorService 执行异步任务(如 S3 文件上传),在异步任务内开启日志上下文作用域。
缓存
使用 @CacheResult、@CacheInvalidate、@CacheInvalidateAll 注解实现按 ID 缓存查询、失效与全部清除。
YAML 配置
通过 application.yml 按 %dev、%test、%prod 配置档案分别设置数据源、Hibernate ORM 生成策略、RabbitMQ 连接信息,敏感信息使用环境变量占位符。Camel 队列名通过 camel.rabbitmq.queue.* 配置。
健康检查
实现 HealthCheck 接口并使用 @Readiness 注解,通过数据源连接验证数据库可用性。
使用方式
该技能以模式与代码示例形式提供,涵盖上述各类 Quarkus 3.x 架构模式。具体安装命令与调用方式在提供的资料中暂未说明。
适用场景
适用于使用 Quarkus 3.x 构建云原生 Java 服务、需要事件驱动架构与 Apache Camel 集成的开发场景,包括 REST API 开发、消息队列集成、数据持久化、异步处理与原生编译。
限制
资料中未提供该技能的安装命令、版本兼容性矩阵、性能数据或收费信息。