Java后台框架篇--Spring Integration模块集成
来源:互联网 发布:cats vs dogs数据下载 编辑:程序博客网 时间:2024/06/18 08:15
Spring Integration 提供了基于Spring的EIP(Enterprise Integration Patterns,企业集成模式)的实现。Spring Integration 主要解决的问题是不同系统之间交互的问题,通过异步消息驱动来达到系统交互时系统之间的松耦合。
Spring Integration 主要有Message、Channel、Message EndPoint组成。
Message
Message是用来在不同部分之间传递的数据。Message有两部分组成:消息体(payload)与消息头(header)。消息体可以是任何数据类型;消息头表示的元数据就是解释消息体的内容。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
Channel
在消息系统中,消息发送者发送消息到通道(Channel),消息接受者从通道(Channel)接收消息。
1、顶级接口
(1) MessageChannel
MessageChannel 是Spring Integration消息通道的顶级接口:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
MessageChannel 有两大子接口,分别是PollableChannel (可轮询)和SubscribableChannel(可订阅)。我们所有的消息通道类都是现实这两个接口。
(2) PollableChannel
PollableChannel 具备轮询获得消息的能力。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
(3) SubscribableChannel
SubscribableChannel 发送消息给订阅了MessageHanlder的订阅者
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
2、常用消息通道
(1)、PublishSubscribeChannel
PublishSubscribeChannel允许广播消息给所有订阅者,配置方式如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
其中,当前消息通道的id为publishSubscribeChannel。
(2)、QueueChannel
QueueChannel允许消息接收者轮询获得消息,用一个队列(queue)接收消息,队列的容量大小可配置,配置方式如下:
- 1
- 2
- 3
- 4
- 5
其中,QueueChannel构造参数10即为队列的容量。
(3)、PriorityChannel
PriorityChannel可按照优先级将数据存储到队列,它依据于消息的消息头priority属性,配置方式如下:
- 1
- 2
- 3
- 4
- 5
(4)、RendezvousChannel
RendezvousChannel确保每一个接收者都接收到消息后再发送消息,配置方式如下:
- 1
- 2
- 3
- 4
- 5
(5) DirectChannel
DirectChannel是Spring Integration默认的消息通道,它允许将消息发送给为一个订阅者,然后阻碍发送直到消息被接收,配置方式如下:
- 1
- 2
- 3
- 4
- 5
(6)、ExecutorChannel
ExecutorChannel可绑定一个多线程的task executor,配置方式如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3、通道拦截器
Spring Integration给消息通道提供了通道拦截器(ChannelInterceptor),用来拦截发送和接收消息的操作.
ChannelInterceptor接口定义如下,我们只需要实现这个接口即可:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
通过如下代码给所有的channel增加拦截器
channel.addInterceptor(someInterceptor);
Message EndPoint
消息端点(Message EndPoint)是真正处理消息的(Message)组件,它还可以控制通道的路由。我们可用的消息端点包含如下:
(1) Channel Adapter
通道适配器(Channel Adapter)是一种连接外部系统或传输协议的端点(EndPoint),可以分为入站(inbound)和出站(outbound)。
通道适配器是单向的,入站通道适配器只支持接收消息,出站通道适配器只支持输出消息。
Spring Integration内置了如下的适配器:
- 1
- 2
- 3
(2) Gateway
消息网关(Gateway)类似于Adapter,但是提供了双向的请求/返回集成方式,也分为入站(inbound)和出站(outbound)。
Spring Integration 对响应的Adapter都提供了Gateway。
(3) Service Activator
Service Activator 可调用Spring的Bean来处理消息,并将处理后的结果输出到指定的消息通道。
(4) Router
路由(Router) 可根据消息体内容(Payload Type Router)、消息头的值(Header Value Router) 以及定义好的接收表(Recipient List Router) 作为条件,来决定消息传递到的通道。
(5) Filter
过滤器(Filter) 类似于路由(Router),不同的是过滤器不决定消息路由到哪里,而是决定消息是否可以传递给消息通道。
(6) Splitter
拆分器(Splitter)将消息拆分为几个部分单独处理,拆分器处理的返回值是一个集合或者数组。
(7) Aggregator
聚合器(Aggregator)与拆分器相反,它接收一个java.util.List作为参数,将多个消息合并为一个消息。
(8) Enricher
当我们从外部获得消息后,需要增加额外的消息到已有的消息中,这时就需要使用消息增强器(Enricher)。消息增强器主要有消息体
增强器(Payload Enricher)和消息头增强器(Header Enricher)两种。
(9) Transformer
转换器(Transformer)是对获得的消息进行一定的转换处理(如数据格式转换).
(10) Bridge
使用连接桥(Bridge)可以简单的将两个消息通道连接起来。
- Java后台框架篇--Spring Integration模块集成
- 集成框架spring integration体验
- Java后台框架篇--Spring框架中模块组成
- Spring Integration集成框架之JDBC
- Spring Integration集成框架之Message-Channel
- Spring Integration集成框架之JDBC
- Spring Integration(集成)
- Spring kafka Integration集成
- Spring Integration框架介绍
- Java后台框架篇--Spring之WebFlow
- Java后台框架篇--Spring高级装配
- Java后台框架篇--Spring之AOP
- Java后台框架篇--Spring之缓存
- Java后台框架篇--spring+websocket整合
- Spring Integration in action 3 - 集成系统
- Java后台框架篇--Spring依赖注入和控制反转
- Java后台框架篇--Spring的AOP实现原理
- Java后台框架篇--Spring应用上下文配置:Xml方式
- 词向量源码解析:(6.5)fasttext源码解析之文本分类4
- 洛谷 P2962 高斯消元解异或方程
- window下注册服务的命令
- Hisat2下载
- BZOJ 2142 礼物 (扩展Lucas)
- Java后台框架篇--Spring Integration模块集成
- XPath+第二节
- Eclipse下如何打开Servers窗口及应用
- 小游戏
- 图上的文章(割点和桥)
- 输入一个十进制数,利用栈操作,将该数转换成n进制数。
- JAVA多态——类型判断
- 解释器构造实践-ANTLR(一)
- Django框架