关于ESB的开发实践小结

豆豆网   技术应用频道   2008年09月06日  【字号: 收藏本文

内容摘要:本指南描述了服务总线(Aqualogic Enterprise Service Bus --- 简称:ESB)的一些典型使用场景、设计模式和实践经验。同时对于ESB上一些常见的问题予以解答。

  本文的读者应该已经了解ESB的基础概念、进行了相关实践,以及熟悉ESB的管理配置界面。

  使用流程元素

  ESB提供了丰富的消息流程处理的模型,可以有多种方式来实现。因此需要有一个指导来表明在何时使用哪种方式比较适合。

  何处执行转换(Transformations)

  路由节点(route node)是消息流树上的一个页节点。如果我们需要转换成或需要转换的消息格式依赖于目标服务,因此在路由节点(route node)或发布节点(publish node)中的请求/响应动作。在发布节点的操作中,任何请求过程中的数据转换是发布动作目标服务所私有的。换一种方式讲,当发布完成后,任何请求信息的改变会回滚到初始状态。另一种请求动作是在outbound上下文变量($outbound)中设定控制变量来影响系统对于发送出去消息的操作(如:设定服务质量QoS等)。

  如果转换是在消息请求(或消息响应)过程中执行,而不考虑路由终点,那么需要在请求(或响应)的管道中配置消息转换。

  例如,对于一个大批量的订单,需要对收到的SOAP报文生成一个订单汇总,并通过eMail发送给采购经理。为支持这种场景,在请求管道中需要包含一个发布动作。如果订单很大,请求动作需要将该订单转换成一个订单汇总,并将$attachments变量中的附件信息全部删除

  假设请求中附件信息的转换不需要理会最终的路由节点,因此建议在请求管道中的一个阶段(stage)将附件进行格式的转换。

  假设消息需要根据WS-addressing头信息路由到两个终点中的一个。其中第二个终点(Web Service)需要将SOAP消息体中的订单转换到一个新版本。此时,路由节点需要进行条件路由,以将信息发送到两个终点中的一个,在第二个路由终点的请求动作中需要对订单信息进行格式转换。另外,如果该服务采用的是JMS方式发送,还可以在$outbound变量中设定QoS为“exactly once”。

来源:dev2dev.bea.com.cn    作者:皮山杉    责编:豆豆技术应用

正在加载评论...