4.2 和 4.3 之间的变化
新组件
4.3 版本新增了一些组件。
AMQP 异步出站网关
请参阅 异步出站网关。
MessageGroupFactory
我们引入了 MessageGroupFactory
策略,以允许控制 MessageGroupStore
逻辑中的 MessageGroup
实例。
我们为 SimpleMessageGroup
添加了 SimpleMessageGroupFactory
实现,其中 GroupType.HASH_SET
作为标准
MessageGroupStore
实现的默认工厂。
有关更多信息,请参阅 消息存储。
PersistentMessageGroup
我们为持久 MessageGroupStore
实例添加了 PersistentMessageGroup
(延迟加载代理)实现,
当它们的 lazyLoadMessageGroups
为 true
(默认值)时,它会为 getMessageGroup()
返回此实例。
有关更多信息,请参阅 消息存储。
FTP 和 SFTP 流式入站通道适配器
我们添加了入站通道适配器,它们为每个文件返回一个 InputStream
,让您无需将远程文件写入本地文件系统即可检索它们。
有关更多信息,请参阅 FTP 流式入站通道适配器 和 SFTP 流式入站通道适配器。
StreamTransformer
我们添加了 StreamTransformer
,用于将 InputStream
负载转换为 byte[]
或 String
。
有关更多信息,请参阅 流转换器。
集成图
我们添加了 IntegrationGraphServer
,以及 IntegrationGraphController
REST 服务,用于将 Spring Integration 应用程序的运行时模型作为图暴露。
有关更多信息,请参阅 集成图。
JDBC 锁注册表
我们添加了 JdbcLockRegistry
,用于通过数据库表共享的分布式锁。
有关更多信息,请参阅 JDBC 锁注册表。
LockRegistry
的 LeaderInitiator
我们添加了基于 LockRegistry
策略的 LeaderInitiator
实现。
有关更多信息,请参阅 领导事件处理。
一般性更改
本节描述了 4.3 版本为 Spring Integration 带来的一般性更改。
核心更改
本节描述了 Spring Integration 核心的一般性更改。
链中的出站网关
以前,您可以在链中的出站网关上指定 reply-channel
。
它完全被忽略了。
网关的回复会发送到下一个链元素,或者如果网关是最后一个元素,则发送到链的输出通道。
现在会检测到并禁止此条件。
如果您有此类配置,请删除 reply-channel
。
异步服务激活器
我们添加了一个选项,使服务激活器可以同步。 有关更多信息,请参阅 异步服务激活器。
邮件更改
本节描述了 Spring Integration Mail 功能的一般性更改。
可自定义的用户标志
可自定义的 userFlag
(在 4.2.2 中添加,用于提供用于表示邮件已被
查看的标志的自定义)现在在 XML 命名空间中可用。
有关更多信息,请参阅 当 Recent
不支持时标记 IMAP 消息。
邮件消息映射
您现在可以使用 MessageHeaders
包含邮件头,负载包含电子邮件内容来映射入站邮件消息。
以前,负载始终是原始的 MimeMessage
。
有关更多信息,请参阅 入站邮件消息映射。
JMS 更改
本节描述了 Spring Integration JMS 功能的一般性更改。
头部映射器
DefaultJmsHeaderMapper
现在通过调用其 toString()
方法将标准 correlationId
头部映射为消息属性。
有关更多信息,请参阅 将消息头部映射到 JMS 消息和从 JMS 消息映射。
异步网关
JMS 出站网关现在具有 async
属性。
有关更多信息,请参阅 异步网关。
聚合器更改
当 POJO 聚合器释放 Message<?>
对象的集合时,行为有所改变。
这种情况很少见,但如果您的应用程序这样做,您需要对 POJO 进行一些小的更改。
有关更多信息,请参阅此 重要提示:SimpleMessageGroup.getMessages()
方法返回 unmodifiableCollection
。 注释。
[[tcp/udp-changes]] === TCP/UDP 更改
本节描述了 Spring Integration TCP/UDP 功能的一般性更改。
事件
当服务器连接工厂启动时,会发出一个新的 TcpConnectionServerListeningEvent
。
有关更多信息,请参阅 TCP 连接事件。
您现在可以在 <int-ip:udp-outbound-channel-adapter>
上使用 destination-expression
和 socket-expression
属性。
有关更多信息,请参阅 UDP 适配器。
流反序列化器
各种反序列化器在整个消息组装完成之前无法分配最终缓冲区,现在支持将接收数据的原始缓冲区进行池化,而不是为每条消息创建和丢弃一个缓冲区。 有关更多信息,请参阅 TCP 连接工厂。
TCP 消息映射器
消息映射器现在可以选择性地设置配置的内容类型头部。 有关更多信息,请参阅 IP 消息头部。
文件更改
本节描述了 Spring Integration 文件功能的一般性更改。
目标目录创建
FileWritingMessageHandler
生成的文件名可以表示一个子路径,以在目标目录中保存文件的所需目录结构。
有关更多信息,请参阅 生成文件名。
FileReadingMessageSource
现在将 WatchService
目录扫描逻辑隐藏在内部类中。
我们添加了 use-watch-service
和 watch-events
选项来启用此行为。
由于 API 的不一致性,我们已弃用顶层 WatchServiceDirectoryScanner
。
有关更多信息,请参阅 WatchServiceDirectoryScanner
。
追加和刷新
您现在可以避免在追加时刷新文件,并使用多种策略在空闲期间刷新数据。
有关更多信息,请参阅 使用 APPEND_NO_FLUSH
时刷新文件。
保留时间戳
您现在可以将出站通道适配器配置为设置目标文件的 lastmodified
时间戳。
有关更多信息,请参阅 文件时间戳。
分裂器更改
FileSplitter
现在在文件完全读取后自动关闭 FTP 或 SFTP 会话。
这适用于出站网关返回 InputStream
或您使用新的 FTP 或 SFTP 流式通道适配器的情况。
我们还引入了一个新的 markers-json
选项,用于将 FileSplitter.FileMarker
转换为 JSON String
,以实现宽松的下游网络交互。
有关更多信息,请参阅 文件分裂器。
文件过滤器
我们添加了 ChainFileListFilter
作为 CompositeFileListFilter
的替代方案。
有关更多信息,请参阅 读取文件。
AMQP 更改
本节描述了 Spring Integration AMQP 功能的一般性更改。
内容类型消息转换器
出站端点现在支持配置了 ContentTypeDelegatingMessageConverter
的 RabbitTemplate
,
这样您可以根据消息内容类型选择转换器。
有关更多信息,请参阅 出站消息转换。
延迟消息处理的头部
Spring AMQP 1.6 增加了对 延迟消息交换 的支持。
头部映射现在支持此功能使用的头部(amqp_delay
和 amqp_receivedDelay
)。
AMQP 支持的通道
AMQP 支持的通道现在支持消息映射。 有关更多信息,请参阅 AMQP 支持的消息通道。
Redis 更改
本节描述了 Spring Integration Redis 功能的一般性更改。
[[list-push/pop-direction]] ==== 列表推入/弹出方向
以前,队列通道适配器始终以固定方向使用 Redis 列表,从左端推入,从右端读取。
您现在可以使用 RedisQueueMessageDrivenEndpoint
和 RedisQueueOutboundChannelAdapter
的 rightPop
和 leftPush
选项分别配置读取和写入方向。
有关更多信息,请参阅 Redis 队列入站通道适配器 和 Redis 队列出站通道适配器。
队列入站网关默认序列化器
入站网关中的默认序列化器已更改为 JdkSerializationRedisSerializer
,以与出站网关兼容。
有关更多信息,请参阅 Redis 队列入站网关。
HTTP 更改
以前,对于没有 content-type
头部但有正文的请求(例如 POST
),正文会被忽略。
在此版本中,此类请求的内容类型被视为 application/octet-stream
,如 RFC 2616 推荐。
有关更多信息,请参阅 Http 入站组件。
uriVariablesExpression
现在默认使用 SimpleEvaluationContext
(自 4.3.15 起)。
有关更多信息,请参阅 映射 URI 变量。
SFTP 更改
本节描述了 Spring Integration SFTP 功能的一般性更改。
chmod
更改
SFTP 出站网关(用于 put
和 mput
命令)和 SFTP 出站通道适配器现在支持 chmod
属性,以在上传后更改远程文件权限。
有关更多信息,请参阅 SFTP 出站通道适配器
和 SFTP 出站网关
。
FTP 更改
本节描述了 Spring Integration FTP 功能的一般性更改。
会话更改
FtpSession
现在支持 list()
和 listNames()
方法的 null
,因为底层 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
头部默认不再映射。
有关更多信息,请参阅 AMQP 消息头部。
Groovy 脚本
您现在可以使用 compile-static
提示或任何其他 CompilerConfiguration
选项配置 groovy 脚本。
有关更多信息,请参阅 Groovy 配置。
@InboundChannelAdapter
更改
@InboundChannelAdapter
现在有一个 channel
属性的别名,用于常规的 value
。
此外,目标 SourcePollingChannelAdapter
组件现在可以通过其提供的名称(outputChannelName
选项)以晚绑定方式解析目标 outputChannel
bean。
有关更多信息,请参阅 注解支持。
XMPP 更改
XMPP 通道适配器现在支持 XMPP 扩展 (XEP)。 有关更多信息,请参阅 XMPP 扩展。
WireTap 晚绑定
WireTap
ChannelInterceptor
现在可以接受一个 channelName
,该名称稍后在第一个活动拦截器操作期间解析为目标 MessageChannel
。
有关更多信息,请参阅 Wire Tap。
ChannelMessageStoreQueryProvider
更改
ChannelMessageStoreQueryProvider
现在支持 H2 数据库。
有关更多信息,请参阅 支持消息通道。
WebSocket 更改
ServerWebSocketContainer
现在公开了一个 allowedOrigins
选项,SockJsServiceOptions
公开了一个 suppressCors
选项。
有关更多信息,请参阅 WebSockets 支持。