摘 要: 基于企业服务总线实施系统集成过程中,配置基于消息的监控平台,并添加基于消息的事务处理及异常干预补偿机制。当传输通道中出现异常消息时,补偿机制根据捕捉到的异常信息进行参数匹配后基于消息进行补偿处理并存储在缓存队列中,根据需要可以对缓存队列中的消息重新获取和发送,避免异常消息丢失,确保了集成数据传输的可靠性和鲁棒性。
关键词: 企业服务总线;监控平台;消息补偿
在基于企业服务总线系统集成平台中,配置消息监控平台对消息流进行实时监控,针对每个消息传输步骤都有明确可视化的状态变化数据, 包括消息数据运行情况统计、出错信息查看、传输数据历史溯源,可以通过监控平台展示出来。在消息监控平台中采用消息跟踪法捕捉异常,并根据异常消息的反馈信息进行情景参数配置,对可预料范围内的异常进行纠正、事物回滚,实现消息补偿,预料外的异常消息也会存储到中间件缓存队列中,根据需要经人工干预对消息可以重新获取、重新发送,避免出现异常后消息丢失。消息补偿机制主要采用消息跟踪、消息补偿、异常干预三种方法实现。
1 消息跟踪
制定“CQSF-XML”的数据交换模型作为统一的消息报文格式,规范系统间消息通信标准,结构化数据便于消息跟踪功能的实现,同时体现了系统集成的契约原则。CQSF-XML消息报文主要格式[1]如下:
<?xml version="1.0" encoding="UTF-8"?>
<TradeData>
<BaseInfo>
<TradeSeq>信息传输交易序列号</TradeSeq>
<ActionCode>操作编码</ActionCode>
<TradeTime>信息传输交易时间</TradeTime>
<SourceSys>信息传输源系统名称</SourceSys>
<Target>信息传输源系统名称</Target>
<ResultCode>应答码</ResultCode>
<ResultMsg>返回消息</ResultMsg>
<ExceptionMsg>错误信息描述</ExceptionMsg>
</BaseInfo>
<SwitchMsg>业务信息</SwitchMsg>
</TradeData>
消息报文内容分为报文头信息(BaseInfo)和业务数据信息(SwitchMsg),报文头信息中包含传输控制管理信息和一些消息实时状态标识。其中ResultCode(应答码)描述消息错误级别。主要应答码定义如表1所示。
在企业服务总线消息传输过程中,数据在每个节点都会发生变化,将这一系列的信息变化记录下来就组成信息交换过程中的监控记录,包括系统的整体运行状况。另外,对监控记录划分级别,可实现动态更改消息监控深度,从而可以根据不同的需要实现不同级别的信息监控。消息跟踪架构[2]示意图如图1所示。
2 消息补偿
消息补偿架构示意图如图2所示。源系统通过企业服务总线同时向系统B和系统C发送数据,请求服务信息被放在缓存中,作为事务处理机制提交,一旦系统C请求调用失败,就会触发异常处理程序。异常处理程序根据消息报文进行事务回滚处理,依次调用系统B和系统C中已注册的事务补偿处理程序回滚业务数据,业务数据被存储在MQ中,等待重新发送。
3 异常干预
系统实时检查事件库中的异常信息,根据预先在WMB中配置的E-mail节点自动向指定人员发送异常通知邮件。维护人员通过异常干预控制界面定位异常信息,并从预先配置的异常干预措施中选择解决方案。异常干预功能提供跟踪处理,支持消息重传、批处理过程重做等操作,可以对异常干预结果进行查看。异常干预融合在监控平台之中。例如当某个消息出现异常而中断时,可以在监控平台中查询到这个异常中断的服务,同时查询界面中会显示能够处理该异常的一些可行的异常干预措施(例如再运行该任务等)。异常干预架构示意图如图3所示。
企业服务总线消息补偿处理机制,采用系统化方法保证消息传输正确,及时准确定位错误原因,在出现异常时进行事务回滚,确保消息的可靠性传输,提高了我公司企业服务总线运行的健壮性。
参考文献
[1] 丁跃潮,张涛.XML实用教程(第1版)[M].北京:北京大学出版社,2006.
[2] 张潇毅,邓波,丁鲲.一种基于事件流处理引擎的企业服务总线平台[J].解放军理工大学学报,2010,11(2):178-183.