对Spring Integration中关键概念的个人理解

学习一个新的技术,最重要的应该是对这个技术(架构、体系)中一些关键概念的理解,只有正确理解了这些概念,才能顺利地掌握这个技术。

下面就个人在学习Spring Integration时的一些个人理解罗列如下,感兴趣的DX可以一起讨论。

 

MessageEndpoint就是一个管道、过滤器架构中的过滤器。

这里的所谓过滤器,是在两个管道之间的一个装置,对输入信息进行处理,然后将处理结果输出到输出管道;

一个过滤器可以是一个Service 的一个方法,该方法的输入参数就是输入管道中的数据,而输出结果就是向输出管道中的输出;

 

但是Channel中的数据都是以Message类型封装的,而方法的参数则是普通的Java类型,因此需要有一个Transformer来进行格式转换。

 

有时候不是所有输入管道中的数据都要处理,所以就需要“条件过滤器”(这个过滤器是个微观过滤器,是上面的管道、过滤器架构中过滤器的一个子零件)进行判断选择;(根据消息,是否处理)

 

有时候管道中的输入比较杂,比如是油水混合物,过滤装置需要将油和水分别输出到不同的输出管道,因此,就不能使用静态的定义输入、输出管道的方式,而应该采用“路由”的概念。在Service的方法中,还是按照完全不知道外部环境(消息、管道等)的方式来处理,而由自定义的“Router”将方法的输出定位到对应的输出管道;(根据消息,选择管道)

 

如果输入管道中的数据太复杂,需要简化,我们可以使用“Spliter”将复杂的Message输入,拆分成小的Message,然后再将所有拆分后的消息发送到输出管道。(固定管道,对消息进行操作)。形象上,不是"→<", 而是"——  →  -------"

 

与Spliter对应的,会有一个Aggrigator, 是其反过程,从技术上要比Spliter复杂,因为要维持状态,要等待所有的子消息都接收到,成功组装为一个完整的大的消息,所以,会有timeout相关设定。

 

Channel Adapter 管道适配器是用来在不同的Transport介质之间做匹配的一个适配器。比如,电线中传输的是电能,如果需要将电能转换为光能继续传输,就需要有一个转换器,将输入管道(电线)中的数据(电),进行格式转换,转换为输出管道(光纤)可以承载的格式(光)。

 

在Spring Integration中,Adapter是一个很重要的部分,用来将业务代码与整合代码进行隔离,一般是整合的入口。如果没有request-channel,会定义一个MessageSource,一般是一个方法。缺省的channel就是其id

 

Messaging Gateways 消息网关,基本上就是Facade模式,业务应用系统通过该消息网关来访问底层消息系统,该网关将消息系统复杂的底层机制进行了封装,只简化为几个常用的api,比如发送消息、接收消息、发送并接收消息(发送后等待响应,直到接收到响应之后输出返回)。注意:这里的消息网关并不是一个对象,而是一个方法。而在Spring中定义的<gateway .../>才是指的包含消息网关方法的bean. 注意:Send操作是向request-channel中写数据,receive是从reply-channel中接收。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值