4.2 和 4.3 之间的更改
新组件
版本 4.3 添加了许多新组件。
AMQP 异步出站网关
请参阅 异步出站网关。
MessageGroupFactory
我们引入了MessageGroupFactory
允许控制MessageGroup
中的 实例MessageGroupStore
逻辑。
我们添加了SimpleMessageGroupFactory
实现SimpleMessageGroup
,使用GroupType.HASH_SET
作为默认值
工厂为 标准MessageGroupStore
实现。
有关更多信息,请参阅 Message Store 。
PersistentMessageGroup
我们添加了PersistentMessageGroup
(lazy-load proxy) 实现MessageGroupStore
实例
返回getMessageGroup()
当他们的lazyLoadMessageGroups
是true
(默认值)。
有关更多信息,请参阅 Message Store 。
FTP 和 SFTP 流入站通道适配器
我们添加了入站通道适配器,这些适配器返回InputStream
,允许您检索远程文件,而无需将其写入本地文件系统。
有关更多信息,请参阅 FTP 流入站通道适配器 和 SFTP 流入站通道适配器。
StreamTransformer
我们添加了StreamTransformer
要将InputStream
payload 复制到byte[]
或String
.
有关更多信息,请参阅 Stream Transformer 。
集成图
我们添加了IntegrationGraphServer
与IntegrationGraphController
REST 服务,将 Spring Integration 应用程序的运行时模型公开为图形。
有关更多信息,请参阅 Integration Graph。
JDBC Lock Registry
我们添加了JdbcLockRegistry
对于通过数据库表共享的分布式锁。
有关更多信息,请参阅 JDBC Lock Registry。
LeaderInitiator
为LockRegistry
我们添加了LeaderInitiator
基于LockRegistry
策略。
有关更多信息,请参阅 领导事件处理 。
一般更改
本节描述了版本 4.3 为 Spring 集成带来的一般更改。
核心变更
本节描述了对 Spring 集成核心的一般更改。
链中的出站网关
以前,您可以指定reply-channel
在链内的出站网关上。
它完全被忽视了。
gateway 的回复将转到下一个 chain element,或者,如果 gateway 是最后一个 element,则返回到 chain 的 output channel。
现在,系统会检测并禁止此情况。
如果您有这样的配置,请删除reply-channel
.
异步服务激活器
我们添加了一个选项,使服务激活器同步。 有关更多信息,请参阅 Asynchronous Service Activator 。
邮件更改
本节描述了对 Spring 集成邮件功能的一般更改。
可自定义的用户标志
可定制的userFlag
(在 4.2.2 中添加,以提供用于表示邮件已
seen) 现在在 XML 命名空间中可用。
看在以下情况下标记 IMAP 邮件Recent
不支持了解更多信息。
邮件消息映射
现在,您可以使用MessageHeaders
包含邮件标头和包含电子邮件内容的有效负载。
以前,有效负载始终是原始的MimeMessage
.
有关更多信息,请参阅入站邮件映射。
JMS 更改
本节描述了对 Spring 集成 JMS 功能的一般更改。
标头映射器
这DefaultJmsHeaderMapper
现在映射标准correlationId
header 作为 Message 属性,方法是调用其toString()
方法。
有关更多信息,请参见Mapping Message Headers to and from JMS Message。
异步网关
JMS 出站网关现在有一个async
财产。
有关更多信息,请参阅异步网关。
聚合商更改
当 POJO 聚合器发布Message<?>
对象。
这种情况很少见,但是,如果您的应用程序这样做,则需要对 POJO 进行少量更改。
查看此内容重要说明:SimpleMessageGroup.getMessages()
method 返回一个unmodifiableCollection
.注意以了解更多信息。
[[tcp/udp 更改]] === TCP/UDP 更改
本节描述了对 Spring 集成 TCP/UDP 功能的一般更改。
事件
新的TcpConnectionServerListeningEvent
在启动 Server Connection Factory 时发出。
有关更多信息,请参阅 TCP 连接事件。
您现在可以使用destination-expression
和socket-expression
attributes 开启<int-ip:udp-outbound-channel-adapter>
.
有关更多信息,请参阅 UDP 适配器。
流反序列化器
在组装整个消息之前无法分配最终缓冲区的各种反序列化器现在支持池化接收数据的原始缓冲区,而不是为每个消息创建和丢弃缓冲区。 有关更多信息,请参阅 TCP 连接工厂。
TCP 消息映射器
消息映射器现在可以选择设置配置的内容类型标头。 有关更多信息,请参阅 IP 消息报头。
文件更改
本节描述了对 Spring 集成文件功能的一般更改。
目标目录创建
为FileWritingMessageHandler
可以表示一个子路径,用于在目标目录中保存文件的所需目录结构。
有关更多信息,请参阅生成文件名。
这FileReadingMessageSource
现在隐藏了WatchService
目录扫描逻辑。
我们添加了use-watch-service
和watch-events
选项来启用此行为。
我们弃用了顶级WatchServiceDirectoryScanner
因为 API 不一致。
看WatchServiceDirectoryScanner
了解更多信息。
追加和刷新
现在,您可以在追加时避免刷新文件,并在空闲期间使用多种策略刷新数据。
看使用 时刷新文件APPEND_NO_FLUSH
了解更多信息。
保留时间戳
现在,您可以配置出站通道适配器以设置目标文件的lastmodified
时间戳。
有关更多信息,请参阅 File Timestamps 文件时间戳。
Splitter 更改
这FileSplitter
现在,当文件完全读取时,它会自动关闭 FTP 或 SFTP 会话。
当出站网关返回InputStream
或者当您使用新的 FTP 或 SFTP 流媒体频道适配器时。
我们还引入了一个新的markers-json
转换选项FileSplitter.FileMarker
转换为 JSONString
轻松的下游网络交互。
有关更多信息,请参阅 File Splitter 。
文件过滤器
我们添加了ChainFileListFilter
作为CompositeFileListFilter
.
有关更多信息,请参阅读取文件。
AMQP 更改
本节描述了对 Spring 集成 AMQP 功能的一般更改。
内容类型消息转换器
出站终端节点现在支持RabbitTemplate
配置了ContentTypeDelegatingMessageConverter
这样
,您可以根据 Message 内容类型选择转换器。
有关更多信息,请参阅 出站消息转换。
延迟消息处理的标头
Spring AMQP 1.6 增加了对延迟消息交换的支持。
标头映射现在支持标头 (amqp_delay
和amqp_receivedDelay
) 中。
AMQP 支持的通道
AMQP 支持的通道现在支持消息映射。 有关更多信息,请参见 AMQP 支持的消息通道。
Redis 更改
本节描述了 Spring Integration Redis 功能的一般更改。
[[列表推送/弹出方向]] ==== 列表推/弹出方向
以前,队列通道适配器总是在固定方向上使用 Redis 列表,推送到左端并从右端读取。
现在,您可以使用rightPop
和leftPush
选项RedisQueueMessageDrivenEndpoint
和RedisQueueOutboundChannelAdapter
分别。
有关更多信息,请参阅 Redis Queue Inbound Channel Adapter 和 Redis Queue Outbound Channel Adapter。
队列入站网关默认序列化程序
入站网关中的默认序列化程序已更改为JdkSerializationRedisSerializer
以实现与出站网关的兼容性。
有关更多信息,请参阅 Redis 队列入站网关。
HTTP 更改
以前,对于具有正文(例如POST
),没有content-type
标头,则正文将被忽略。
在此版本中,此类请求的内容类型被视为application/octet-stream
按推荐
由 RFC 2616 提供。
有关更多信息,请参阅 Http 入站组件。
uriVariablesExpression
现在使用SimpleEvaluationContext
默认情况下(自 4.3.15 起)。
有关更多信息,请参阅映射 URI 变量。
SFTP 更改
本节描述了对 Spring 集成 SFTP 功能的一般更改。
chmod
变化
SFTP 出站网关(用于put
和mput
命令),并且 SFTP 出站通道适配器现在支持chmod
属性以在上传后更改远程文件权限。
看SFTP Outbound Channel Adapter
和SFTP Outbound Gateway
了解更多信息。
FTP 更改
本节描述了对 Spring 集成 FTP 功能的一般更改。
会话更改
这FtpSession
现在支持null
对于list()
和listNames()
方法,因为底层 FTP 客户端可以使用它。
这样,您现在可以配置FtpOutboundGateway
如果没有remoteDirectory
表达。
您还可以配置<int-ftp:inbound-channel-adapter>
没有remote-directory
或remote-directory-expression
.
有关更多信息,请参阅 FTP/FTPS 适配器。
路由器更改
这ErrorMessageExceptionTypeRouter
现在支持Exception
超类映射,以避免在多个继承者的情况下同一通道重复。
为此,ErrorMessageExceptionTypeRouter
在初始化期间加载映射类以快速失败ClassNotFoundException
.
有关详细信息,请参阅路由器。
标头映射
本节介绍版本 4.2 和 4.3 之间标头映射的更改。
AMQP 标头映射
以前,默认情况下仅映射标准 AMQP 标头。
您必须显式启用用户定义的标头的映射。
在此版本中,默认情况下会映射所有标头。
此外,入站amqp_deliveryMode
默认情况下,不再映射 header。
有关更多信息,请参阅 AMQP 消息标头。
Groovy 脚本
现在,您可以使用compile-static
提示或任何其他CompilerConfiguration
选项。
有关更多信息,请参阅 Groovy 配置。
@InboundChannelAdapter
变化
这@InboundChannelAdapter
现在有一个别名channel
属性value
.
此外,目标SourcePollingChannelAdapter
组件现在可以解析目标outputChannel
bean 从其提供的名称 (outputChannelName
options) 中。
有关更多信息,请参阅 Annotation Support 。
XMPP 更改
XMPP 通道适配器现在支持 XMPP 扩展 (XEP)。 有关更多信息,请参阅 XMPP 扩展 。
WireTap 延迟绑定
这WireTap
ChannelInterceptor
现在可以接受channelName
解析为目标MessageChannel
稍后,在第一次主动拦截器作期间。
有关详细信息,请参见 Wire Tap。
ChannelMessageStoreQueryProvider
变化
这ChannelMessageStoreQueryProvider
现在支持 H2 数据库。
有关更多信息,请参阅 Backing Message Channels。
WebSocket 更改
这ServerWebSocketContainer
现在公开了一个allowedOrigins
选项和SockJsServiceOptions
暴露一个suppressCors
选择。
有关更多信息,请参阅 WebSockets 支持。