(整理)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产品架构之通道设计 郭时光 1概述 消息处理管道是 ESB架构的一个核心部分, ESB的核心有消息处理器分为两部分,一 部分是路由处理器,一部分是端点处理器。当然,我们的基础组件也会适时的在两部分的处 理器中间,拦截加入多个基础组件处理器。例如,日志组件,会在各个部分加日志处理器, 以记录ESB运行的日志。 在(图1-1)中只是一个简单的通道, 在这个通道中没有分支, 路由处理器也只有一个, 在实际的使用过程中当然没有简单,在路由处理器可以有多个, Endpoint也可以拥有多个。 当整个通道的分支过于复杂的时候,建议还是把它看成一个业务流程,交他专业的 BPM应 用来做,这样不但可以减少 ESB复杂度,而且可修改性也能有一个大的提高。 在实际的开发过程中,我们可以使用责任链的模式。一条责任链就是一个通道,消息处理器 ESB初始化的时候就初始化就是责任链中的一个个 han dler ESB初始化的时候就初始化 好了一个个的消息处理器。Router 拦截抑入流控 组件处理器r仃:截加入II恵 组件处理黠服养消息沆L ■ tJi 好了一个个的消息处理器。 Router 拦截抑入流控 组件处理器 r仃:截加入II恵 组件处理黠 服养消息沆 L ■ tJi Inbound End point :C逋迅衿Y/J 坟处理L :l馮鱼- *鶉换 拦截加入监控 组件处理器 1-1 Outbound Endpoint 2 ESB的通道 三部分组成,他是这样运行的。ESB由 Outbound Endpoint、Inbound Endpoint、Router 三部分组成,他是这样运行的。 看起来是不是很简单,但在现实环境下,我们可能会需多记录日志 我们的通道就会变成这样,需要做流控,这时候 看起来是不是很简单,但在现实环境下,我们可能会需多记录日志 我们的通道就会变成这样 ,需要做流控,这时候 MessageReciver Transformer 简单路由器 | Transrormsr MessageDIpachr 当然这也不是一个最复杂的状态, 因为我们在ESB的内部可能会做一些简单的流程编排, 所 以,他可能会有多个的路由,可能会有多个的 transformer或者是 MessageDispacher。这些 都经求,我们在做这个通道的架构时,可修改性是十分重要的。 在这种可修改性要求高的情况下, 我们当然不可能对每一支交易做硬编码, 这时我们就 一定会想起经典的模式 责任链(Chain of Responsibility Pattern UML),相信大家对这个责 任链的模式应该十会的熟习了吧, 以下是他的UML图大家可以回忆一下。 为此我们定义了一个接口 MessageProcessor,这个接口就是 handler,它会有很多的子 接口如,Router,Transfomer,MessageDispacher,Filter等。除了 MessageReceiver所有的 ESB内部 的处理,都会被转化成一个消息处理器,他的最终的接口都是 MessageProcessor。这当然也 包括我们的日志和流控处理。 这样我们就会得到一个很强的可修改性, 虽然,可能在某种意 义上来说,他牺牲了一定的性能,但这一点点小的牺牲还是十分值得的。 ^interface^Router?inier1^ce^Filter=:=:interface? Transformer ^interface^ Router ?inier1^ce^ Filter =:=:interface? Transformer ^=interface MessageDisparcher 我们要用怎么样的方式串起这个责任链呢,在一般的情况下,我们应当使用 配置信息来做,因为ESB对配置还是有一定的要求的,它是一个非常大的主题, 所以我留到以后来进行阐述,这里,我们先看看代码是怎么组装的,在这时,我 们也会充分的考虑以后,怎么改成配置化的要求。 在组装通道时,我们最重要的是需要一个好的创建对象来做,这个创建对象 的接口如下, ^interface? ChanndBuilder + chafn(processor /^essageProcessor) : vofd Chain这个方法我们传入一个processor,我们会按前后顺利放到List中,这 个,我们可以把我们的一个个的 MessageProcessor chai倒我们的Builder中,然 后,使用 build 来获得一个 MessageProcesso,这个 MessageProcessor有下一个 processor的引用。他的接口如下,这个接口当然是需要继续 MessagePro

文档评论(0)

大宝&小宝 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档