ESB產品架构之通道设计.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ESB產品架构之通道设计

ESB产品架构之通道设计郭时光概述消息处理管道是ESB架构的一个核心部分, ESB的核心有消息处理器分为两部分,一部分是路由处理器,一部分是端点处理器。当然,我们的基础组件也会适时的在两部分的处理器中间,拦截加入多个基础组件处理器。例如,日志组件,会在各个部分加日志处理器,以记录ESB运行的日志 。在(图1-1)中只是一个简单的通道,在这个通道中没有分支,路由处理器也只有一个,在实际的使用过程中当然没有简单,在路由处理器可以有多个,Endpoint也可以拥有多个。当整个通道的分支过于复杂的时候,建议还是把它看成一个业务流程,交他专业的BPM应用来做,这样不但可以减少ESB复杂度,而且可修改性也能有一个大的提高。在实际的开发过程中,我们可以使用责任链的模式。一条责任链就是一个通道,消息处理器就是责任链中的一个个handler。我们可以在使用配置组件,在ESB初始化的时候就初始化好了一个个的消息处理器。通迅协议处理端点报文协议转换报文协议转换通迅协议处理端点InboundEndpointOutboundEndpointRouter简单的路由器拦截加入流控组件处理器拦截加入日志组件处理器拦截加入监控组件处理器服务消息流系统B11ESB的通道ESB由Outbound Endpoint、Inbound Endpoint、Router 三部分组成,他是这样运行的。看起来是不是很简单,但在现实环境下,我们可能会需多记录日志 ,需要做流控,这时候我们的通道就会变成这样当然这也不是一个最复杂的状态,因为我们在ESB的内部可能会做一些简单的流程编排,所以,他可能会有多个的路由,可能会有多个的transformer或者是MessageDispacher。这些都经求,我们在做这个通道的架构时,可修改性是十分重要的。在这种可修改性要求高的情况下,我们当然不可能对每一支交易做硬编码,这时我们就一定会想起经典的模式责任链(Chain of Responsibility Pattern UML),相信大家对这个责任链的模式应该十会的熟习了吧, 以下是他的UML图大家可以回忆一下。为此我们定义了一个接口MessageProcessor,这个接口就是handler,它会有很多的子接口如,Router,Transfomer,MessageDispacher,Filter等。除了MessageReceiver所有的ESB内部的处理,都会被转化成一个消息处理器,他的最终的接口都是MessageProcessor。这当然也包括我们的日志和流控处理。这样我们就会得到一个很强的可修改性,虽然,可能在某种意义上来说,他牺牲了一定的性能,但这一点点小的牺牲还是十分值得的。我们要用怎么样的方式串起这个责任链呢,在一般的情况下,我们应当使用配置信息来做,因为ESB对配置还是有一定的要求的,它是一个非常大的主题,所以我留到以后来进行阐述,这里,我们先看看代码是怎么组装的,在这时,我们也会充分的考虑以后,怎么改成配置化的要求。在组装通道时,我们最重要的是需要一个好的创建对象来做,这个创建对象的接口如下,Chain这个方法我们传入一个processor,我们会按前后顺利放到List中,这个,我们可以把我们的一个个的MessageProcessor chain到我们的Builder中,然后,使用build来获得一个MessageProcessor,这个MessageProcessor有下一个processor的引用。他的接口如下, 这个接口当然是需要继续MessageProcessor。在这里可能会出现一个问题,并不是每一个处理器都会实现这个接口,这样,如果要成为责任链中的一个处理器,我们就需要使用粉饰的模式,这个处理器加上这个功能,就这样,我们的一个处理链就完成了。

文档评论(0)

sd47f8cI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档