spring integration 基础知识点
1.spring integration Message
包含了header, payload。header中主要包括原信息,metadata,例如文件名,文件时间戳,文件id等
2. message channel
其主要结构是pipes-and-filters结构,主要是在消息的生产者和消费者之间,将消息的收发进行解耦,同时又可以对消息进行拦截以及监控。
messagechannel主要分为点到点或发布订阅制。
点到点最多允许一个消费者可以从channel中消费到信息,订阅制顾名思义就是会将消息通知到所有的订阅者。
两种模式下,轮询式从channel会用队列将消息缓冲下来,缓冲的优势在于可以控制消息传入到channel,使消费者免于过载。缺点就是消费者必须不断轮询才能获得消息。
而订阅至则是消息驱动型。
3. message endpoint
使用spring integration 主要是为了利用控制反转来简化系统集成。没必要自己直接实现生产者和消费者,甚至不必生产消息调用发送接收方法。而应该专注于自己的特定model,用一些特殊配置就能将自己的代码和底层spring integration的消息传输基座结合。
4. Message Endpoints
message endpoint用于处理消息,message endpoints负责处理映射消息到Message Channel。
4.1 Message Transformer
Message Transformer负责转换消息内容或结构,同时可以返回修改后的消息。例如将payload中的信息从xml格式转换为String格式。或者是修改header中的内容。
4.2 Message Filter
message Filter决定一条消息是否应该被传送给输出channel中,不满足条件则会被drop掉。
通常会被用在订阅模式channel上,同一信息被多个消费者收到时,可以使用不同的filter对消息进行筛选。
4.3 Message Router
消息路由主要会被用于决定哪个channel应该接受这条特定信息。
4.4 Splitter
Splitter是一种Message endpoint,用于从input channel中接受信息,将消息分割成不同的多条信息,然后再讲这些信息发送到对应output channel中。
4.5 Aggregator
Aggregator是一种Message endpoint,用与接受多条信息并将信息组合成一条。通常是一条流水线上,splitter的下游消费者。
它也会更加复杂,需要维护消息状态,决定这组消息何时是可用的,必要时还需要进行超时处理。
4.6 Service Activator
Service Activator用于将服务实例与消息载体相链接。需要注意,要配置input message channel,如果方法会返回值,那么output message channel也一样需要进行配置。
当收到input message channel中的信息后,会调用handle()方法,即message handler。处理完成后,若配置了output channel,则会将响应的信息传入outputc channel。
4.7 Channel Adapter
将message channel 与其他系统或中间件相连,即可以是inbound,也可以是outbound的。
inbound形式
outbound形式
4.8 Endpoint Bean Names