QDAirPortBackend0122/adxp-adapter/README.md
2026-01-22 13:19:47 +08:00

265 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ADXP SDK Adapter Service
ADXP 数据中台 SDK 适配器服务 - 基于 JDK 8 运行的独立微服务
## 新架构特性ADXP主动连接
### 🔄 **适配器主动连接架构**
- **启动即连接**: 适配器服务启动时自动连接到ADXP数据中台
- **无需登录接口**: 移除 `/login` 端点,由适配器自动管理认证
- **连接状态管理**: 提供 `/status``/reconnect` 端点进行连接管理
- **WebSocket实时推送**: 支持实时向客户端推送航班消息
- **健康监控**: 内置连接状态监控和自动重连机制
## 功能特性
将青岛机场数据中台 SDK (adxp-client-2.6.9.jar) 封装为 REST API 服务,解决 SDK 与现代 Java 版本的兼容性问题。
## 技术栈
- **Java**: JDK 8
- **框架**: Spring Boot 2.7.18
- **构建**: Maven
- **容器化**: Docker
## 快速开始
### 方式1Docker Compose推荐
```bash
# 1. 构建并启动服务
docker compose up -d
# 2. 查看日志
docker compose logs -f
# 3. 停止服务
docker compose down
```
### API接口ADXP主动连接架构
#### 获取连接状态
```
GET /api/adxp/status
```
返回当前ADXP数据中台的连接状态和会话信息。
#### 强制重连
```
POST /api/adxp/reconnect
```
强制断开当前连接并重新连接ADXP数据中台。
#### 获取消息接口
```
GET /api/adxp/messages
```
使用当前活动连接获取ADXP数据中台的航班消息。
#### 断开连接接口
```
POST /api/adxp/disconnect
```
主动断开与ADXP数据中台的连接。
#### 健康检查
```
GET /api/adxp/health
```
检查适配器服务健康状态和ADXP连接状态。
#### WebSocket实时推送
```
ws://localhost:8086/ws/flight-notifications
```
实时接收来自ADXP数据中台的航班消息推送。
### 1. 登录
```http
POST /api/adxp/login
Content-Type: application/json
{
"username": "dianxin",
"password": "dianxin@123"
}
```
响应:
```json
{
"success": true,
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"message": "登录成功"
}
```
### 2. 接收消息
```http
GET /api/adxp/messages?sessionId=550e8400-e29b-41d4-a716-446655440000
```
响应:
```json
{
"success": true,
"messages": [
{
"serviceCode": "ARR",
"actionCode": "ADD",
"content": "<xml>...</xml>"
}
],
"message": null
}
```
### 3. 登出
```http
POST /api/adxp/logout
Content-Type: application/json
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000"
}
```
### 4. 健康检查
```http
GET /api/adxp/health
```
响应:
```json
{
"status": "UP",
"activeSessions": 1
}
```
## 快速测试
### API调用示例
#### 1. 检查连接状态
```bash
curl http://localhost:8086/api/adxp/status
```
#### 2. 强制重连
```bash
curl -X POST http://localhost:8086/api/adxp/reconnect
```
#### 3. 获取消息
```bash
curl http://localhost:8086/api/adxp/messages
```
#### 4. 断开连接
```bash
curl -X POST http://localhost:8086/api/adxp/disconnect
```
#### 5. 健康检查
```bash
curl http://localhost:8086/api/adxp/health
```
## 配置说明
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `ADXP_HOST` | ADXP 数据中台主机地址 | localhost |
| `ADXP_PORT` | ADXP 数据中台端口 | 7001 |
| `ADXP_USERNAME` | ADXP 用户名 | dianxin |
| `ADXP_PASSWORD` | ADXP 密码 | dianxin@123 |
### application.yml
```yaml
adxp:
host: ${ADXP_HOST:localhost}
port: ${ADXP_PORT:7001}
username: ${ADXP_USERNAME:dianxin}
password: ${ADXP_PASSWORD:dianxin@123}
```
## 部署说明
### 开发环境
```bash
# 1. 启动适配器(默认指向 localhost
docker compose up -d
```
### 生产环境
```bash
# 1. 创建环境变量文件
cat > .env << EOF
ADXP_HOST=10.10.10.100 # 真实数据中台 IP
ADXP_PORT=7001 # 真实数据中台端口
ADXP_USERNAME=dianxin # 真实数据中台用户名
ADXP_PASSWORD=dianxin@123 # 真实数据中台密码
EOF
# 2. 启动服务
docker compose up -d
```
## 开发说明
### 项目结构
```
adxp-adapter/
├── pom.xml # Maven 配置
├── Dockerfile # Docker 镜像定义
├── docker-compose.yml # Docker Compose 配置
├── libs/ # 数据中台 SDK
│ ├── adxp-client-2.6.9.jar
│ └── mq.allclient-9.0.jar
└── src/ # 源代码
```
### 核心依赖
- **adxp-client-2.6.9.jar**: 数据中台 SDK
- **Apache CXF 3.2.4**: SOAP 协议支持
- **Jackson 1.9.13**: JSON 序列化
- **Spring Boot 2.7.18**: 应用框架
## 许可证
内部项目