基于XML消息代理的企业应用集成技术(精)
- 格式:pdf
- 大小:291.90 KB
- 文档页数:4
< xsl: apply-templates select = " D" / > < xsl: apply-templates select = " B" / > < /N> < / xsl: template > < / xsl: stylesheet >
消息代理是对消息队列的一种扩展。它一般采用发布 / 订 阅式消息交换模式, 各个应用分别扮演消息消费者和生产者的 角色, 具有以下特点:
( 1) 提供对数据库的支持, 消 息代理使用 数据库 来存储 与 之相关的数据, 如持久性消息及相关控制数据, 从而使消息代 理拥有长事务处理能力;
( 2) 提供结构化的 主题, 基 于内 容的 订阅 和 发布, 消 息 订 阅 者 根 据 相 关 主 题 订 阅 消 息;
收稿日期: 2005- 09- 09; 修返日期: 2005- 10- 23 基金项目: 国家自然科学重点基金资助项目( E05 50335020) ; 国家重点科技攻关项目( 2003 BA 103C) ; 武汉市科技攻关项目 ( 20043007077- 02)
将并行访问变成串行访问的办法, 减少了许多在并行访问中要 考虑的资源共享问题, 为应用间的通信提供了便利。
图 2 基于 XSLT 的消息转换
图 2 中若消息订阅者只接受消息 Y 格式, 该格式消息只 有元素 B, D 包含的数据, 则需要用 XSLT 对其 进行 X→Y 的 映 射转换, 从而得到订阅者所要求的格式。其 XSLT[ 3] 代码如下:
< ?xml version = " 1. 0" ? > < xsl: stylesheet version = " 1. 0"
内再根据内置的 XML 工具, 如 XSLT 等对 XML 文档 的各个 节
点进行处理, 从而完成消息的转换。其转换流程如图 2 所示。
消
根节点 M
息 发 布
XML 消息 X
者
子元素 B 子元素 C 子素 B
XML 消息 息
Y
订 阅
者
源消息 XML 文档 XSLT 映射转换 目的消息 XML 文档
最底层是通信层, 通信协议栈提供基本的接口通信协议如
· 186·
计算机应用研究
2006 年
HTTP, FTP, TCP/ IP 等, 而适配 器模 块则 负责 将 通过 上述 协 议 获得的包含应用数据的 消息在 各种格 式与 XML 格式间 转换, 完成 应 用 与 代 理 的 通 信 。
通信层的上层是存储层, 该层负责应用的注册、登记、授权 以及日志记录。对于从通 信层获 得的 XML 消 息, 验证 授权 模 块通过对比消息类型库( 由控制 逻辑层创建和 存储) 来决定 该 消息的授权策略。取得授权后, 对于标记为长事务的消息将其 持久化存储在数据库中, 反之则存储在消息队列中供消息引擎 实时 处 理 。
( 1. Wuhan University of Technology, Wuhan Hubei 430070, China; 2. CAD /CIMS Engineering Research Center, Guizhou University, Guiyang Guizhou 550003, China)
阅的主题并没有完全匹配的消息, 即发布者发布的消息虽然与
其主题相关, 但并不是订阅者所能接受的格式。这就要求消息 代理提供这样一种机制———对发 布和订 阅的消 息进行 相关 的
转换。
消息代理的消 息 映射 与转 换 模块 就是 负 责这 种 转换 的。
各个应用发布和订阅的 消息被 标准化 成 XML 格式 后, 在代 理
2. 3 汇聚和分支
另外还存在这样的情况, 某消息消费者 D 同时订阅了消 息生产者 A, B, C 的三个消息, 但它并不需要三个独 立的消息。 这就要求消息代理 能够 提供 这样 一种 机制: 来 自 应用 A, B, C 的消息依照某种顺序依序发布到消息代理的流队列中, 经由某 种算法( 汇聚算法) 先将三个消息汇聚成一个符 合应用 D 订 阅 的消息格式( 图 3 中消息自左向右传递) 后, 再将其路由到应 用 D中。其示意图如图 3 所示。
( 3) 多种消息处理 节点, 提 供消 息的 并发、顺序 以及 异 步 等支持;
( 4) 增强的消息格式转换和处理功能; ( 5) 可视化的消息处理流程开发 模式, 允 许用户 对消息 进 行复杂的逻辑操作。 一个典型的、基于发布 / 订阅模 式实现 消息传 递的 消息 代 理结构[ 2] 如图 1 所示。
消息代理的最上层是控制逻辑层, 该层负责提供工具以便 让人对消息的类型、消息的路由逻辑、例外处理等进行定义, 并 存储在相应的库中, 从而实现由人对数据的灵活控制。
2 消息代理系统实现
2. 1 消息的路由
( 1) 消息匹配。它是一种逻辑路由, 只大 致确定 消息的 来 源, 发给谁, 有些什么内容, 而不去关心消息的获得和发送具体 该如何实现, 它通过按主题组织的发布/订阅消息传递模式来 完成。这种模式下消息的生产 者和消 费者分 别向消 息代理 发 送发布 / 订阅消息。消息代理用一个称之为流队列的队列来接 收消息生产者发布的消息, 同时用一个控制队列来保存消息消 费者的订阅消息。当发布 消息经 XML 标准化 后, 消息 所包 含 的源、目的 地地址, 消 息类 型等 信息 保存 为元 素、属性 或记 录 ( 包含多个元素或属性) 等元数据的值。到达流队列后, 消息 引擎根据这些元素和属性而分类成不同的主题保存起来, 完成 消息的发布。当有应用向代理提交某一主题的订阅请求时, 消 息代理同样将该订阅请求消息以 XML 数据格式保存在控制队 列中, 为找到与该订阅主 题相匹 配的发 布主题, 代理 遍历流 队 列中所有发布的主题, 直 到找到 与主题 匹配的 消息, 这一过 程 是通过检查保存发布 / 订阅消息各主题的元素或属性的值来完 成的, 从而实现了消息的匹配。
中图 法分 类号 : TP319
文献标识码: A
文章 编号 : 1001- 3695( 2006) 12- 0185 - 03
Technology of Enterprise Application Integration Based on XML Message Brokers
SHENG Bu-yun1,2, ZHANG Ming-xiong1, LUO Dan1 , XIE Qing-sheng2
应用 A
A
应用 B
B
应用 C
C
汇聚算法 XSLT 转换
D
应用 D
摘 要: 提 出一 种在 消息 的路 由、转换 、汇 聚和 分支 以 及消 息 的 标 志 和 关 联 中采 用 XML 技 术 的 消 息 代理 结 构 ,
详细讨论其技术细节和实现方案, 并最后给出该消息代理在企业应用集成中的一个应用实例。
关键 词: XML; 消 息代 理; 消息路 由; 汇聚 和分 支; 消 息关 联
消息代理[ 1] 是一种以消息为载体、以 独立的第三方软件体 系为消息处理平台, 在数据源与目的地之间移动数据使 信息处 理流 畅的 软 件技 术 。数 据源 与 目的 地 包括 已 有的 应 用 、文 件 、数 据库、对象( 如 CORBA, COM) 以及 Web 客户端等。消息代理主 要提供数据的递 送、过滤、汇聚 或分 支、映 射、转 换和 路由 等功 能, 屏蔽不同的硬件平台、数据库、消息格式、通信协议之间的鸿 沟与差异, 提供应用到应用之间高效、便捷的通信能力。
存储层的上层是消息引擎层, 这一层有两个核心功能: 消 息的映射转换和消息的路 由。消息的 映射转 换模块 负责把 存 储队列 或 数 据 库 中 的 XML 消 息 通 过 XSLT( eXtensible Style sheet Language Transformations) 转 换 成 其 他 应 用 能 够 识 别 的 XML 数据, 然后通过适配器转换成其他 格式, 如 平面文件、HTML 等格式文件。消息路由模块 基于主 题接收 和分发 消息, 并 基于预先定义好的消息处理逻辑( 由人在控制 逻辑层定义 ) 确 保转发给正确的应用。对于 单个的 消息, 可以 根据消 息的源、 目的地址, 消息的类型等 定义多 个主题, 消息 的路由 程序通 过 对这 些 主 题 分 类 、对 所 有 订 阅 请 求 进 行 匹 配找 到 符 合 要 求 的 订 阅, 并通过通信层完成消息的投递。
( 2) 消息投递。它是纯粹的物理路 由, 每 个应用 在建立 与 代理的通信连接后, 相关数据以路由表的形式保存在数据库当 中。消息匹配完成后, 消息引擎通过查询该消息目的地应用路 由信息, 进而选择合适的路径并通过通信层完成消息的实际投 递。
2. 2 消息映射与转换 在消息实际投递之前可能存在这样一种情况: 订阅者所订
第 12 期
盛步云等: 基于 XML 消息代理的企业应用集成技术
· 185·
基 于 XML 消 息 代 理 的 企 业 应 用 集 成 技 术*
盛步 云1 , 2 , 章明雄1 , 罗 丹1 , 谢庆生2
( 1 . 武汉 理工 大学 , 湖北 武 汉 430070 ; 2. 贵州 大学 CAD/ CIMS 工 程技 术研 究中心 , 贵 州 贵 阳 550003)
Abstract: This paper represents a message brokers framework that uses XML technology when it routs message , transfers messages, aggregates messages, splits messages, identifies and relates messages. What’s more, it discusses the technical solution in detail. At last it gives an instance for enterprise application integration. Key words: XML; Message Brokers; Message Routing; Aggregation and Spiting; Message Relating