Skip to content

micro-java 中间件依赖

micro-java 在单体 server-java 基础上引入了 Spring Cloud 生态组件。下表说明各组件在本项目中的实际用途与本地开发是否必须。

组件一览

组件默认地址是否必须用途
MySQL 8localhost:3306RBAC 数据存储(与全仓共用 docker-compose.yml
Nacoslocalhost:8848服务注册与发现;Gateway lb:// 路由依赖
RabbitMQlocalhost:5672(默认配置)用户创建事件 UserCreatedEvent
Seata Serverlocalhost:8091否(可关闭)assignRoles@GlobalTransactional 演示
Kafkalocalhost:9092MESSAGING_TYPE=kafka 时替代 RabbitMQ
ShardingSphere—(嵌入式 JDBC)内置system-service 数据源;当前单库,无独立进程

Nacos

配置位置:各服务 spring.cloud.nacos.discovery

环境变量默认说明
NACOS_ADDRlocalhost:8848注册中心地址
NACOS_NAMESPACEpublic命名空间

Gateway 通过服务名路由:

  • lb://auth-service
  • lb://system-service

注意:须先启动 auth / system 并在 Nacos 注册成功,再启动 gateway,否则登录请求会失败。

RabbitMQ(默认消息队列)

system-service 默认 app.messaging.type=rabbitmq

环境变量默认
RABBITMQ_HOSTlocalhost
RABBITMQ_PORT5672
RABBITMQ_USERxichen
RABBITMQ_PASSWORDxichen123
RABBITMQ_VHOST/

应用内配置(app.messaging):

配置项
exchangexichen.events
queuexichen.user.created
routing-keyuser.created

RabbitMqConfig 在启动时自动声明 Exchange / Queue / Binding。创建用户时 UserEventPublisher 发消息,RabbitUserEventConsumer 消费并写日志。

Kafka(可选)

切换消息实现:

bash
$env:MESSAGING_TYPE="kafka"
$env:KAFKA_BOOTSTRAP="localhost:9092"

同时禁用 Rabbit 相关 Bean(@ConditionalOnProperty)。需本地或 Docker 启动 Kafka broker。

Seata(可选)

system-service 默认 seata.enabled=trueassignRoles 使用 @GlobalTransactional

本地无 Seata Server 时建议关闭:

bash
$env:SEATA_ENABLED="false"
环境变量默认说明
SEATA_ENABLEDtrue设为 false 跳过 Seata 客户端
SEATA_SERVERlocalhost:8091TC 地址

注册与配置均指向 Nacos 的 SEATA_GROUP(与 Seata Server 部署配套)。

ShardingSphere-JDBC

ShardingSphereDataSourceConfig 将单台 MySQL 包装为逻辑数据源 ds0当前无分片规则,行为与直连 MySQL 基本一致。

扩展分库分表时在此类增加 ShardingRuleConfiguration,无需改 Controller。

环境变量与单体版相同:DB_HOSTDB_PORTDB_NAMEDB_USERDB_PASSWORD

Resilience4j(Gateway 内置)

无需独立部署。配置于 gateway/src/main/resources/application.yml

  • 滑动窗口熔断(失败率 50%)
  • GET 请求重试 2 次(502/503)
  • 超时 10s
  • 降级响应:GET /fallback{ code: 503, message: "..." }

推荐本地 Docker 组合

bash
docker compose up -d   # MySQL(仓库根目录)

docker run -d --name xichen-nacos -p 8848:8848 -p 9848:9848 \
  -e MODE=standalone nacos/nacos-server:v2.3.2

docker run -d --name xichen-rabbitmq -p 5672:5672 -p 15672:15672 \
  -e RABBITMQ_DEFAULT_USER=xichen \
  -e RABBITMQ_DEFAULT_PASS=xichen123 \
  rabbitmq:3-management

生产环境建议将上述服务纳入独立 docker-compose 或 K8s 编排,与本仓库 docker-compose.yml(仅 MySQL)分离维护。

相关文档

Xichen Full Stack 内部文档