帮助你设计 Quarkus 3 后端架构模式,覆盖消息、REST、数据访问与异步处理。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "quarkus-patterns" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/quarkus-patterns/SKILL.md 2. 保存为 ~/.claude/skills/quarkus-patterns/SKILL.md 3. 装好后重载技能,告诉我可以用了
请基于 Quarkus 3.x LTS 和 Camel,设计一个事件驱动的订单服务架构。要求包含 REST API、消息消费与发布、CDI 服务分层、Panache 实体与仓储设计、异步处理流程,以及关键代码骨架。
输出一套订单服务架构方案,包含模块划分、流程说明与可落地的 Quarkus 代码骨架。
请为一个使用 Quarkus 的用户管理微服务设计 RESTful API 规范,包括资源路径、请求响应结构、错误处理、分页查询、输入校验、状态码约定,并给出对应的 Java 接口示例。
得到一份清晰的 REST API 设计规范,并附带符合 Quarkus 风格的接口示例。
我有一个 Quarkus 后端通过 Camel 处理异步消息,请帮我设计更稳定的消息处理模式。需要包含重试机制、死信队列、幂等控制、事务边界、监控指标,以及示例实现建议。
输出一套提升可靠性的异步处理模式建议,帮助后端服务更稳定地消费和处理消息。
Quarkus 3.x architecture and API patterns for cloud-native, event-driven services with Apache Camel.
@Slf4j
@ApplicationScoped
@RequiredArgsConstructor
public class OrderProcessingService {
private final OrderValidator orderValidator;
private final EventService eventService;
private final OrderRepository orderRepository;
private final FulfillmentPublisher fulfillmentPublisher;
private final AuditPublisher auditPublisher;
@Transactional
public OrderReceipt process(CreateOrderCommand command) {
ValidationResult validation = orderValidator.validate(command);
if (!validation.valid()) {
eventService.createErrorEvent(command, "ORDER_REJECTED", validation.message());
throw new WebApplicationException(validation.message(), Response.Status.BAD_REQUEST);
}
Order order = Order.from(command);
orderRepository.persist(order);
OrderReceipt receipt = OrderReceipt.from(order);
fulfillmentPublisher.publishAsync(receipt);
auditPublisher.publish("ORDER_ACCEPTED", receipt);
eventService.createSuccessEvent(receipt, "ORDER_ACCEPTED");
log.info("Processed order {}", order.id);
return receipt;
}
}
Key Patterns:
@RequiredArgsConstructor for constructor injection via Lombok@Slf4j for Logback logging@Transactional on service methods that write through Panache or repositories@ApplicationScoped
public class ProcessingService {
public void processDocument(Document doc) {
LogContext logContext = CustomLog.getCurrentContext();
try (SafeAutoCloseable ignored = CustomLog.startScope(logContext)) {
// Add context to all log statements
logContext.put("documentId", doc.getId().toString());
logContext.put("documentType", doc.getType());
logContext.put("userId", SecurityContext.getUserId());
log.info("Starting document processing");
// All logs within this scope inherit the context
processInternal(doc);
log.info("Document processing completed");
} catch (Exception e) {
log.error("Document processing failed", e);
throw e;
}
}
}
Logback Configuration (logback.xml):
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeContext>true</includeContext>
<includeMdc>true</includeMdc>
</encoder>
</appender>
<logger name="com.example" level="INFO"/>
<root level="WARN">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
@Slf4j
@ApplicationScoped
@RequiredArgsConstructor
public class EventService {
private final EventRepository eventRepository;
private final ObjectMapper objectMapper;
public void createSuccessEvent(Object payload, String eventType) {
Objects.requireNonNull(payload, "Payload cannot be null");
Event event = new Event();
…
通过双评审智能体对结果进行对抗式校验,提升输出发布前的可靠性
帮助开发者为 Quarkus 3.x 服务实施测试驱动开发、修复缺陷并安全重构。