QAUP_Management/adxp-adapter/README.md

255 lines
4.6 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 运行的独立微服务
## 功能说明
将青岛机场数据中台 SDK (adxp-client-2.6.9.jar) 封装为 REST API 服务,解决 SDK 与现代 Java 版本的兼容性问题。
## 技术栈
- **Java**: JDK 8
- **框架**: Spring Boot 2.7.18
- **构建**: Maven
- **容器化**: Docker
## 快速开始
### 方式1本地运行需要 JDK 8
```bash
# 1. 编译
mvn clean package
# 2. 运行
java -jar target/adxp-adapter.jar \
--adxp.host=10.10.10.100 \
--adxp.port=7001
```
### 方式2Docker 运行(推荐)
```bash
# 1. 构建镜像
docker build -t adxp-adapter:1.0.0 .
# 2. 运行容器
docker run -d \
-p 8086:8086 \
-e ADXP_HOST=10.10.10.100 \
-e ADXP_PORT=7001 \
--name adxp-adapter \
adxp-adapter:1.0.0
```
### 方式3Docker Compose最简单
```bash
# 1. 设置环境变量
export ADXP_HOST=10.10.10.100
export ADXP_PORT=7001
# 2. 启动服务
docker-compose up -d
# 3. 查看日志
docker-compose logs -f
# 4. 停止服务
docker-compose down
```
## API 文档
### 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
}
```
## 测试
```bash
# 1. 登录
curl -X POST http://localhost:8086/api/adxp/login \
-H "Content-Type: application/json" \
-d '{"username":"dianxin","password":"dianxin@123"}'
# 2. 接收消息(替换为实际的 sessionId
curl "http://localhost:8086/api/adxp/messages?sessionId=YOUR_SESSION_ID"
# 3. 健康检查
curl http://localhost:8086/api/adxp/health
```
## 配置说明
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `ADXP_HOST` | ADXP 数据中台主机地址 | localhost |
| `ADXP_PORT` | ADXP 数据中台端口 | 7001 |
| `SPRING_PROFILES_ACTIVE` | Spring Profile | prod |
### application.yml
```yaml
adxp:
host: ${ADXP_HOST:localhost}
port: ${ADXP_PORT:7001}
```
## 部署说明
### 开发环境
使用 mock 服务器进行开发测试:
```bash
# 启动 mock ADXP 服务器
cd /path/to/QAUP-Management/tools
python3 mock_adxp.py --auto --interval 10
# 启动适配器(指向 localhost
docker-compose up -d
```
### 生产环境
连接真实的 ADXP 数据中台:
```bash
# 设置真实环境变量
export ADXP_HOST=10.10.10.100 # 真实数据中台 IP
export ADXP_PORT=7001
# 启动服务
docker-compose -f docker-compose.yml up -d
```
## 监控
- **健康检查**: `http://localhost:8086/api/adxp/health`
- **Actuator**: `http://localhost:8086/actuator/health`
- **日志文件**: `logs/adxp-adapter.log`
## 故障排查
### 登录失败
1. 检查 ADXP 服务器是否可达
2. 验证用户名密码是否正确
3. 查看日志: `docker-compose logs adxp-adapter`
### Session 过期
客户端需要实现重新登录逻辑,定期刷新 session。
### 网络问题
确保容器能够访问 ADXP 服务器:
```bash
# 进入容器测试网络
docker exec -it adxp-adapter sh
ping ${ADXP_HOST}
```
## 开发说明
### 项目结构
```
adxp-adapter/
├── pom.xml # Maven 配置
├── Dockerfile # Docker 镜像定义
├── docker-compose.yml # Docker Compose 配置
├── libs/ # SDK JAR 文件
│ ├── adxp-client-2.6.9.jar
│ └── mq.allclient-9.0.jar
└── src/main/java/com/qaup/adxp/adapter/
├── AdxpAdapterApplication.java # 主应用类
├── controller/
│ └── AdxpController.java # REST API 控制器
├── service/
│ └── AdxpSdkService.java # SDK 封装服务
└── dto/
├── LoginRequest.java
├── LoginResponse.java
├── FlightMessage.java
└── MessageResponse.java
```
### 依赖说明
- `adxp-client-2.6.9.jar`: 数据中台 SDK
- `mq.allclient-9.0.jar`: IBM MQ 客户端
- Apache CXF 3.2.4: SOAP 支持
- Jackson 1.9.13: JSON 序列化
## 许可证
内部项目