<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>resilience4j on </title>
    <link>/tags/resilience4j/</link>
    <description>Recent content in resilience4j on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Tue, 28 Apr 2026 10:30:00 +0800</lastBuildDate><atom:link href="/tags/resilience4j/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Spring Boot 3.5 &#43; Java 25 微服务里，Resilience4j 用在 HTTP、Redis、Kafka、DB 上的边界与最佳实践</title>
      <link>/posts/spring-boot-resilience4j-external-calls-best-practices/</link>
      <pubDate>Tue, 28 Apr 2026 10:30:00 +0800</pubDate>
      
      <guid>/posts/spring-boot-resilience4j-external-calls-best-practices/</guid>
      <description>背景 Spring Boot 3.5 配合 Java 25，已经把“同步写法 + virtual threads”这条路线变成了很现实的工程选择。JDK 在 JEP 444 里把 virtual threads 的目标讲得很清楚：让 thread-per-request 风格更容易扩展；Spring Boot 官方文档也提供了 spring.threads.virtual.enabled=true 这条开关入口。
于是一个常见问题会重新冒出来：当一个微服务会同时访问 HTTP 下游、Redis、Kafka、数据库时，Resilience4j 应该怎么用？
这篇文章不是“所有外部调用统一套一层 Resilience4j 模板”的教程，而是一篇事实约束下的探索综述。文中的强结论优先建立在仍在维护的官方资料和工程文档上，例如 Spring / Resilience4j、AWS Builders Library、Azure Architecture Center、Google Cloud retry strategy、Redis 官方文档、Spring for Apache Kafka 文档 和 PostgreSQL 文档。少量技术文章和 case study 只用来补充上下文，不会单独支撑“行业定论”。
如果你使用的是 resilience4j-spring-boot3，或者使用 Spring 生态提供的 Spring Cloud CircuitBreaker + Resilience4j，本文的判断原则都成立；区别更多在接入方式，而不在策略本身。
为什么这篇文章只讨论“按 dependency + operation semantics 设计策略” 我对这个问题最核心的判断是：
Resilience4j 不应该按“所有外部调用统一套模板”来使用，而应该按具体 dependency 与操作语义来设计。</description>
    </item>
    
    <item>
      <title>Spring Boot 3.5 &#43; Java 25 &#43; Cloud Native 系列（三）：BFF 聚合层</title>
      <link>/posts/shop-platform-bff-aggregation/</link>
      <pubDate>Thu, 02 Apr 2026 10:00:00 +0800</pubDate>
      
      <guid>/posts/shop-platform-bff-aggregation/</guid>
      <description>在上一篇中，我们看了 API Gateway 如何作为统一入口处理 JWT 校验和路由分发。请求经过 Gateway 后，到达的就是本文的主角——BFF（Backend for Frontend）聚合层。
📦 本文基于的完整项目源码：https://github.com/meirongdev/shop
上一篇：（二）API Gateway 架构
2026-04 实践更新 当前主线代码里，buyer-bff / seller-bff 都已经完成了 typed @HttpExchange 客户端改造；BuyerAggregationService / SellerAggregationService 不再直接持有一堆 raw RestClient 调用链，而是通过 HttpServiceProxyFactory 注入声明式客户端。本文下面与客户端装配相关的表述已按当前实现校正。
BFF 模式：为什么需要聚合层 在微服务架构中，前端页面往往需要从多个领域服务获取数据。如果没有 BFF，前端直接调用每个领域服务会面临：
前端 ←→ profile-service (获取用户档案) ←→ wallet-service (获取钱包余额) ←→ promotion-service (获取可用优惠) ←→ marketplace-service (获取推荐商品) ←→ loyalty-service (获取积分账户) 问题显而易见：前端需要知道每个服务的地址、认证方式、数据格式；任何服务变动都会影响前端代码；更重要的是，前端暴露了内部服务拓扑，安全和治理成本都会明显上升。
graph LR FE1[&#34;前端&#34;] P[&#34;profile-service&#34;] W[&#34;wallet-service&#34;] PM[&#34;promotion-service&#34;] M[&#34;marketplace-service&#34;] L[&#34;loyalty-service&#34;] FE1 -.-&gt; P FE1 -.-&gt; W FE1 -.-&gt; PM FE1 -.</description>
    </item>
    
  </channel>
</rss>
