资源描述
南方航空接口模块设计
1 概述
南方航空接口模块主要实现访问中国南方航空官方网站
深航
海航
国航
东航
南方航空官网
1 2 3 4
航班动态
5
查询航班动态
轮询处理
数据库
推送下发
查询处理
航班动态数据
处理中心模块
1)南航:出发到达(出发机场和到达机场)或航班号
2)东航:出发到达(出发机场和到达机场),国内/国际,航班日期(昨日、今日、明日)或航班号
3)国航:出发到达(出发机场和到达机场),起飞日期或航班号,起飞日期
4)海航:出发到达(出发机场和到达机场),出发时间或航班号,出发时间.出发时间为过往2日今日和未来2日
5)深航:出发到达(出发机场和到达机场),航班日期(今日)
说明: 接口模块将南方航空变更信息主动推送到中心模块;
中心模块也可能主动发起到南方航空的查询;
2 接口说明
与南方航空的接口:使用HttpClient方式模拟查询航班动态,数据格式如下。
航班号
机型
出发机场
到达机场
计划起飞时间
实际起飞时间
计划到达时间
实际到达时间
CZ3101
777
广州
北京
01-16 0800
01-16 0851
16 1110
16 1108
CZ3099
380
广州
北京
01-16 0900
01-16 0938
16 1210
16 1155
CZ0345
332
广州
北京
01-16 1000
01-16 1032
16 1310
--
说明:对航班的起降时间格式化处理成’yyyy-MM-dd HH:mm:ss’
与中心模块的接口有两种: http方式查询接口(可根据配置是否提供), 按航班号查询,返回结果与现有飞友数据格式保持一致。
推送消息下发接口: socket接口,采用Mina实现。属于同一航班的同一批次变更,封装在一条推送消息中。主要格式参见天航信推送消息定义,但由于机场还包括登机口,行李提取等字段,需要增加节点定义。
<flight>
<code>0</code> -- 查询码 --
<note>*** no message ***</note> -- 查询结果描述 –
<no>CA4764</no> -- 航班号 --
<date>2011-10-28</date> -- 飞行日期
<dep>CTU</dep> --起飞机场三字码 --
<arr>XMN</arr> --到达机场三字码 –
<depPlan>2011-10-28 12:10:00</depPlan> -- 计划起飞时间 --
<arrPlan>2011-10-28 15:05:00</arrPlan> -- 计划到达时间 --
<depReady>2011-10-28 11:25:00</depReady> -- 预计起飞时间 --
<arrReady>2011-10-28 15:05:00</arrReady> -- 预计到达时间 --
<depTime>2011-10-28 13:15:00</depTime> -- 实际起飞时间--
<arrTime>null</arrTime> -- 实际到达时间,如果出现备降,此字段为null --
<state>备降</state> -- 航班状态 –
<terminal>T1</terminal> -- 接机楼 --
<hterminal>null</hterminal> -- 候机楼 –
-- 以下字段是当航班有备降的时候出现 --
<altCode>WUH</altCode> -- 备降机场三字码 –
<altState>到达</altState> -- 备降状态 –
<altArrTime>2011-10-28 15:35:00</altArrTime> --备降到达时间
-- 以下字段是当备降后出现新计划时出现 –
<altPlan>
<altDep>CTU</altDep> -- 备降后新计划的起飞机场三字码 --
<altArr>CKG</altArr> -- 备降后新计划的到达机场三字码 --
<altDepPlan>2011-11-1 20:30:00</altDepPlan> --备降后新计划起飞时间--
<altArrPlan>2011-11-1 21:11:00</altArrPlan> --备降后新计划到达时间--
<altDepReady>2011-11-1 20:30:00</altDepReady> --备降后新预计起飞时间
<altArrReady>2011-11-1 21:11:00</altArrReady> --备降后新预计到达时间
<altDepTime>null</altDepTime> --备降后新计划实际起飞时间--
<altArrTime>null</altArrTime> --备降后新计划实际到达时间--
<altState>延误</altState> --备降后新计划状态--
<altTerminal>T2A</altTerminal> --备降后新计划接机楼--
<althTerminal>null</althTerminal> --备降后新计划候机楼--
</altPlan>
--登机口数据—
<board>31</board>
--行李提取处数据—
<garbage>6</garbage>
--机场状态数据--
</flight>
3处理流程
初始化处理:初始化Socket接口并进行端口监听。缓冲队列创建。轮询处理线程创建(数量1个),推送下发处理线程创建(数量可多个)。
轮询处理:以独立线程方式,每隔5分钟向南方航空网站模拟查询航班动态请求,将查询结果解析处理,转换成为内部对象,与缓存中的上次查询结果对比,将有变化的数据,如航班预计起降时间变化等信息,生成待推送消息数据存储到缓冲队列中Queue;
轮询策略:当前时间与实际起飞时间相隔20分钟以内(可配置),便不查询该航班
推送下发处理:以独立线程方式,从缓冲队列中取出待推送数据,取出session,通过该session.write方法发送数据。
展开阅读全文