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

Spring Integration概述相关推荐

  1. streaming api_通过Spring Integration消费Twitter Streaming API

    streaming api 1.概述 众所周知, Spring Integration具有用于与外部系统交互的大量连接器. Twitter也不例外,而且很长一段时间以来,因为Spring Social ...

  2. amqp rabbitmq_通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道

    amqp rabbitmq Spring Integration消息通道默认情况下将消息存储在内存中. 这是因为内存速度快,易于实现,并且不会增加网络成本. 但是,在某些情况下,这可能会引起问题,因为 ...

  3. 通过Spring Integration消费Twitter Streaming API

    1.概述 众所周知, Spring Integration具有用于与外部系统交互的大量连接器. Twitter也不例外,而且很长一段时间以来,因为Spring Social一直是一个开箱即用的解决方案 ...

  4. 通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道

    Spring Integration消息通道默认情况下将消息存储在内存中. 这是因为内存速度快,易于实现,并且不会增加网络成本. 但是,在某些情况下,这可能会引起问题,因为如果应用程序崩溃或服务器意外 ...

  5. Spring Integration 4.0:完整的无XML示例

    1.简介 Spring Integration 4.0终于发布了 ,并且此版本具有非常好的功能. 本文介绍的一种可能性是完全不使用XML即可配置集成流程. 那些不喜欢XML的人仅使用JavaConfi ...

  6. Spring Integration Kafka

    转自:http://www.cnblogs.com/yuanermen/p/5453339.html 一.概述 Spring Integration Kafka 是基于 Apache Kafka 和S ...

  7. Spring系列学习之Spring Integration

    英文原文:https://spring.io/projects/spring-integration 目录 概述 介绍 特性 例子 Spring Boot配置 快速开始 学习 文档 指南 示例 概述 ...

  8. #翻译NO.3# --- Spring Integration Framework

    为什么80%的码农都做不了架构师?>>>    2.4 Message Endpoints A Message Endpoint represents the "filte ...

  9. Spring Integration学习资料

    Spring Integration学习资料 1.1     背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同时也被 ...

最新文章

  1. 开源 免费 java CMS - FreeCMS-标签 channelList .
  2. 服务器搬迁之后的准备工作和应对
  3. 给树莓派增加微型摄像头 Raspberry Mode4
  4. 软件测试周记录之jmeter
  5. 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?
  6. Spring Cloud + Spring Boot + Mybatis + shiro + RestFul + 微服务
  7. Android之解决YouTubePlayerView启动在Android5.0左右的手机出现奔溃问题
  8. Flex整合Spring
  9. 2018 ACM/ICPC 南京站小结
  10. 优秀的CSS布局大全
  11. JavaScript巧学巧用
  12. 计算机软件设计费计算标准,水利工程咨询、勘测设计费收费标准及计算程序
  13. python 恢复删除的文件_如何恢复已删除的python文件(一看就会的恢复软件)
  14. BAT某公司的一套面试题
  15. 手工杀掉双线程、感染所有EXE文件病毒
  16. 多功能计算机如何关闭,电脑教程:键盘关闭fn多功能键盘
  17. Pymol获得蛋白中二级结构信息
  18. android短信验证码方案,Android之短信验证码
  19. Kong的插件:Rate Limiting
  20. 华为nova 3e,重新编译内核文件,解除ptrace限制,以使用Frida

热门文章

  1. 大义灭亲!博士生举报导师抄袭自己的研究成果,学校的操作亮了
  2. jQuery获取div中的内容
  3. 解读SEO 黑帽白帽 (share)
  4. Python爬虫与Opencv结合,制作一款自己的拍照翻译程序!
  5. 靶机渗透练习90-Grotesque:1.0.1
  6. Android群英传读书笔记——第十二章:Android 5.X新特性详解
  7. yaml语法 关于key为中文时的问题
  8. raspberry pi_使用Raspberry Pi为您的娱乐中心构建时钟
  9. java源程序文件_.class文件为Java源程序文件
  10. 铭瑄主板重装系统超详细步骤