组件间环境变量传递
概述
组件间通信变量注入是 Rainbond 平台的核心特性之一,它通过自动注入环境变量实现组件间的解耦通信。本文详细介绍这一机制的工作原理、配置方法及最佳实践。
通信变量原理
什么是通信变量 ?
通信变量是指组件为其依赖方提供的连接信息,例如:
- 数据库的连接地址、端口、用户名和密码
- API服务的认证信息和访问地址
- 消息队列的连接参数
这些变量使得组件间可以在不硬编码连接信息的情况下实现灵活通信。
解耦设计的价值
标准化的设计场景中,业务代码依赖的服务类型不变,但具体依赖的服务实例可以灵活替换:
- 开发环境可使用轻量级数据库
- 测试环境可使用模拟服务
- 生产环境使用高可用集群
通过环境变量注入机制,实现了这种灵活替换而无需修改代码。
实践示例
代码中使用环境变量
以Spring Boot应用为例,配置数据库连接:
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:test}
username: ${MYSQL_USER:root}
password: ${MYSQL_PASSWORD:password}
提示
注意示例中${VAR:default}语法,它提供了默认值,便于本地开发测试。
配置和使用通信变量
前提条件:
- 已创建两个组件A和B
1. 配置端口别名
- 进入组件B的管理页面
- 选择【高级设置】→【端口】选项卡
- 找到需要暴露的端口(如MySQL的3306端口)
- 点击【使用别名】右侧的别名进入别名设置界面
- 设置别名为
DB - 保存设置
信息
设置别名后,系统会自动生成DB_HOST和DB_PORT两 个变量
2. 配置连接信息变量
- 进入组件B的管理页面
- 选择【依赖】选项卡,切换到【连接信息】标签
- 点击【添加变量】,配置其他必要的连接变量:
DB_USER: 数据库用户名DB_PASSWORD: 数据库密码DB_DATABASE: 数据库名称
- 点击【确认】保存变量
3. 建立组件依赖关系
有两种方式建立组件依赖关系:
- 在拓扑图中右键组件A,选择【创建依赖】,然后拖拽到组件B
- 在组件A的管理页面中:
- 切换【依赖】选项卡
- 在【依赖外部组件】中点击【添加依赖】,选择组件B
- 更新或重启组件 A 使配置生效
4. 验证环境变量注入
- 进入组件A的管理页面
- 选择【环境】选项卡
- 查看是否已注入
DB_HOST、DB_PORT等环境变量