ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

本地服务连接 SaaS 测试环境实践:Docker 部署 Redis 与 RocketMQ 完成接口联调

本地服务连接 SaaS 测试环境实践:Docker 部署 Redis 与 RocketMQ 完成接口联调

文章目录

    • 一、问题背景
    • 二、环境调整
    • 三、本地部署 Redis
    • 四、本地部署 RocketMQ
    • 五、修改本地配置
    • 六、启动 OAuth 服务获取 Token
    • 七、验证业务接口
    • 八、总结

一、问题背景

本地开发时,由于部分服务异常,需要临时连接线上saas_test测试环境。

连接后发现:

  • MySQL 可以正常访问;
  • Nacos 配置中心可以正常使用;
  • 但是线上 Redis 和 RocketMQ 网络不可达,本地服务无法正常运行。

因此采用方案:

数据库和 Nacos 继续使用测试环境,本地虚拟机通过 Docker 部署 Redis 和 RocketMQ。


二、环境调整

最终架构:

本地 SpringBoot 服务 | | +---- MySQL(测试环境) | +---- Nacos(测试环境) | +---- Redis(本地 Docker) | +---- RocketMQ(本地 Docker)

三、本地部署 Redis

查看已有镜像:

dockerimages

拉取 Redis:

dockerpull redis:7

启动:

dockerrun-d\--nameredis\-p6379:6379\redis:7

检查:

dockerps

确认 Redis 正常运行。


四、本地部署 RocketMQ

拉取镜像:

dockerpull apache/rocketmq:5.5.0

启动 NameServer:

dockerrun-d\--namerocketmq-nameserver\-p9876:9876\apache/rocketmq:5.5.0\shmqnamesrv

启动 Broker:

dockerrun-d\--namerocketmq-broker\-p10911:10911\apache/rocketmq:5.5.0

五、修改本地配置

原本项目依赖线上 MQ、Redis:

rocketmq:name-server:xxx.xxx.xxx.xxx:9876

修改为本地虚拟机地址:

rocketmq:name-server:192.168.x.x:9876

Redis:

spring:redis:host:192.168.x.xport:6379

六、启动 OAuth 服务获取 Token

业务接口需要认证,因此需要先启动 OAuth 服务。

流程:

登录接口 | ↓ OAuth 服务生成 Token | ↓ Token 保存 Redis | ↓ 业务接口携带 Token 请求

使用 Postman 调用登录接口:

POST /oauth/token

获取:

{"access_token":"xxxx"}

七、验证业务接口

请求业务接口时添加:

Authorization: Bearer token

服务会:

  1. 校验 Token;
  2. 查询 Redis;
  3. 验证通过后访问业务逻辑。

八、总结

本次问题主要是:

本地环境无法直接访问线上 Redis 和 MQ。

解决方式:

  • 保留线上 MySQL、Nacos;
  • 本地 Docker 部署 Redis、RocketMQ;
  • 启动 OAuth 服务获取 Token;
  • 使用 Postman 完成接口验证。

最终实现本地服务接近测试环境运行,方便开发调试。

server: port:2020spring: application: name: es-base-server datasource: dynamic: primary: master strict:falsedatasource: master: url: jdbc:mysql://数据库地址:3306/database_name username: 数据库用户名 password: 数据库密码 driver-class-name: com.mysql.cj.jdbc.Driver cloud: nacos: discovery: server-addr:${NACOS_HOST:nacos-ip}:8848 username:${NACOS_USER:nacos}password:${NACOS_PASSWORD:******}config: server-addr:${NACOS_HOST:nacos-ip}:8848 namespace:${NACOS_NAMESPACE:namespace-id}file-extension: yaml username:${NACOS_USER:nacos}password:${NACOS_PASSWORD:******}shared-configs:# 共享配置文件# -># refresh: true# -># refresh: true->true->true# -># refresh: true->true->truerocketmq: name-server:${ROCKETMQ_HOST:rocketmq-ip}:9876 http: read: timeout:5000connect: timeout:5000servlet: multipart: max-file-size: 100MB max-request-size: 500MB button: fldState:true
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进