Skip to content
Clone
main
56 lines 1.5 KB Rust
pub mod actor;
/// event 与平台共用同一个 Redis 连接配置类型(`cache` 连接池的入参)。
pub mod redis {
pub use crate::redis::{RedisConfig, RedisMode};
}
pub mod consumer;
pub mod platform;
pub mod rpc;
pub mod socket;
use serde::{Deserialize, Serialize};
use crate::ConfigError;
use crate::redis::RedisConfig;
use actor::ActorConfig;
use consumer::RocketMqConsumerConfig;
use platform::PlatformClientConfig;
use rpc::RpcConfig;
use socket::SocketConfig;
/// event 子命令的完整配置。
///
/// 只包含实时通道自身需要的五类参数:socket 通道、actor/心跳、订阅用 Redis、
/// RocketMQ 消费、内部 RPC;不读取数据库/S3/业务域 section。
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct EventConfig {
pub socket: SocketConfig,
pub actor: ActorConfig,
pub redis: RedisConfig,
pub consumer: RocketMqConsumerConfig,
pub rpc: RpcConfig,
pub platform: PlatformClientConfig,
}
impl EventConfig {
pub fn load() -> Result<Self, ConfigError> {
let figment = crate::loader::figment()?;
let config: Self = figment.extract_inner("event").map_err(ConfigError::from)?;
config.validate().map_err(ConfigError::Validation)?;
Ok(config)
}
pub fn validate(&self) -> Result<(), String> {
self.socket.validate()?;
self.actor.validate()?;
self.redis.validate()?;
self.consumer.validate()?;
self.rpc.validate()?;
self.platform.validate()?;
Ok(())
}
}