Spring Integration概述

来源:互联网 发布:java画图api 编辑:程序博客网 时间:2024/05/21 17:56

Spring Integration概述

1.1  背景       

       Spring Integration是Spring项目中秉承其相同目标和原则的新成员。它扩展了Spring的编程模型到消息领域,在Spring已经存在的企业集成支持的基础上,提供了更高级别的抽象。它将控制反转添加到关注点,支持消息驱动架构,例如当特定业务逻辑应该执行时,响应也应该被发送。它支持路由和消息转换,所以不同的传输协议和不同的数据格式能在不影响易测试性的前提下被集成。换句话说,消息和集成关注点都被框架处理,所以业务组件能更好地与基础设施隔离,从而降低开发者所要面对的复杂的集成职责。

1.2 目标和原则

      Spring Integration主要有如下三个目标:

           提供一个简单的模型来实现复杂的企业集成解决方案;
           为基于Spring的应用添加异步的、消息驱动的行为;

           让Spring用户可以直观的、增量的采用;

      Spring Integration基于两个原则:

           组件应该松耦合,方便模型化和易测试;

           框架应该强制业务逻辑和集成逻辑的关注点分离,扩展点本质上应该是抽象的,而且限定在一个清晰的边界内,来促进可重用性和可移植性;

 

1.3  主要组件

       分层架构是一个非常通用和抽象的范式,消息系统非常符合同样抽象的“管道和过滤器”模型。“过滤器”代表任何能够生产和(或)消费消息的组件,“管道”在过滤器间传输消息,所以组件间保持松耦合。

       消息:在Spring Integration中,消息是任何Java对象连同框架处理对象时使用的元数据的一个通用包装。它由负载和头部组成。负载可以是任何类型,头部保存一般的请求信息。

       

       消息通道:一个消息通道代表“管道和过滤器”架构中的一个“管道”。消息生产者发送消息到通道,消息消费者从通道接收消息。消息通道因此解耦了消息组件,同时也提供了消息拦截和监控的切入点。一个消息通道可能符合点对点模式或者发布-订阅模式。如果是点对点模式的通道,发布到通道中的每个消息,最多只有一个消费者可以接收。如果是发布-订阅模式的通道,则会尝试广播每个消息给其所有的订阅者。Spring Integration支持这两种模式。

          

       消息终端:Spring Integration的主要目标之一是通过控制反转简化企业集成解决方案的开发。这意味着你应该不需要直接实现消息消费者和生产者,更不需要在消息通道中构建和调用发送接收操作的细节。相反地,你只需要关注于你基于普通对象实现的特定领域模型。然后,通过宣告式的配置,你可以“连接”你的领域特定代码到Spring Integration提供的消息基础设施。负责这些连接的代码是消息终端。这并不是说必须直接连接到现有应用的代码。任何现有的企业集成解决方案,都需要一些用于集成相关的代码,例如路由选择和协议转换。其中的一个要点就是实现集成逻辑和业务逻辑关注点的分离。换句话说,作为web应用中的MVC模式,其目标应该是提供一个简单而专用的层,转换接入的请求到服务层调用,然后转换服务层返回值到接出的响应。

       消息端点:就像控制器处理HTTP请求,消息端点处理消息。而控制器被映射到URL模式,消息端点被映射到消息通道。

       消息转换器:负责转换一个消息的内容或结构,并返回翻修改后的消息。最常见的转换器可能是把消息负载从一种格式转换成另一种格式的转换器(例如从XML文档转换成java.lang.String字符串)。

       消息过滤器:最终决定消息是否被发送到输出通道。

       消息路由:负责决定下个消息将由哪些通道接收。

      

       消息分解器:是另外一种类型的消息端点,它负责从一个输入通道中接收一个消息,把消息分解成多个消息,然后把它们发送到相应的输出通道。

       集合器:基本上是分解器的镜像,也是一种消息端点,它接收多个消息,然后把他们合并成一个单独的消息。

       服务激活器:是一个连接服务实例到消息系统的通用端点。

      

       通道适配器:是一个连接消息通道到其他系统或是传输的端点。通道适配器可以是接入或是接出的。典型地,通道适配器可以在消息和其他任何发送到/接收于其他系统(文件、HTTP请求,JMS消息等等)的对象或资源之间做一些映射。

        一个接入“通道适配器”端点连接一个源系统到一个消息通道

       

      一个接出“通道适配器”端点连接一个消息通道到一个目标系统

    

1.4  整体处理可能是这样

      

 

 

参考:http://blog.csdn.net/happyteafriends/article/details/8111170 

       

0 0
原创粉丝点击