# Service Name: g3fo-exchange-fix-engine-service ## 1. Overview g3fo-exchange-fix-engine-service 是 g3fo 系统的 FIX 协议接入引擎。它负责与外部交易所或交易对手建立 FIX 连接,进行消息的编码、解码、序列号维护以及消息的持久化存储。 ## 2. Key Responsibilities - **会话管理**: 维护与外部实体的 FIX 会话,处理 Logon, Logout, Heartbeat, ResendRequest 等协议级消息。 - **消息路由**: 将接收到的 FIX 消息转换为内部业务格式并转发给下游服务,同时将下游服务的指令转换为 FIX 消息发送给外部。 - **消息持久化**: 记录所有发送和接收的 FIX 消息,确保在异常重启后能够恢复会话状态。 - **高可用 (HA)**: 支持基于 Redis 选举和 MySQL 共享存储的多实例部署。 ## 3. Key Data Entities - **FIX 消息存储**: 存储在 MySQL 中的 `messages` 表(基于 JdbcStore)。 - **FIX 会话状态**: 存储在 MySQL 中的 `sessions` 表。 ## 4. Dependencies - **Upstream**: `g3fo-trade-service` (发送交易指令) - **Downstream**: 外部交易所 FIX Gateway - **Middleware**: - **MySQL**: 用于消息持久化。 - **Redis**: 用于分布式锁选举。 - **RocketMQ**: 用于与其他微服务通信。 ## 5. Critical Configurations - **QuickFIX/J 配置**: `quick-fix-client.yml` 中定义的会话参数、存储类型、选举参数等。 - **Nacos**: 动态配置中心,存储服务运行参数。 ## 6. Common Operations / Troubleshooting - **高可用架构说明**: 详细的 HA 方案请参考 [FIX Engine 高可用 (HA) 架构方案说明文档](./fix-engine/ha-architecture.md)。 - **日志监控**: 重点关注 `LeaderElectionService` 的选举日志和 `quickfix.JdbcStore` 的数据库操作日志。 - **会话重置**: 手动重置序列号通常需要清理数据库中的 `sessions` 表对应记录并重启服务。