如需使用最新稳定版本,请使用 Spring Integration 7.0.4spring-doc.cadn.net.cn

4.2 与 4.3 之间的变更

请参阅 迁移指南,了解可能影响您应用程序的重要变更。 您可以在 Wiki 上找到从 2.1 版本起的所有版本的迁移指南。spring-doc.cadn.net.cn

新组件

版本 4.3 添加了许多新组件。spring-doc.cadn.net.cn

AMQP 异步出站网关

MessageGroupFactory

我们引入了 MessageGroupFactory 策略,以便在 MessageGroupStore 逻辑中控制 MessageGroup 实例。 我们为 SimpleMessageGroup 添加了 SimpleMessageGroupFactory 实现,其中 GroupType.HASH_SET 作为标准 MessageGroupStore 实现的默认工厂。 有关更多信息,请参阅 消息存储spring-doc.cadn.net.cn

PersistentMessageGroup

我们为持久化 MessageGroupStore 实例添加了 PersistentMessageGroup(延迟加载代理)实现, 当它们的 lazyLoadMessageGroupstrue(默认值)时,该实现会返回此实例以用于 getMessageGroup()。 有关更多信息,请参阅 消息存储spring-doc.cadn.net.cn

FTP 和 SFTP 流式传输入站通道适配器

我们添加了入站通道适配器,它们为每个文件返回InputStream,使您能够在不将远程文件写入本地文件系统的情况下检索这些文件。 有关更多信息,请参阅FTP 流式传输入站通道适配器SFTP 流式传输入站通道适配器spring-doc.cadn.net.cn

StreamTransformer

我们添加了 StreamTransformer 用于将 InputStream 负载转换为 byte[]String。 有关更多信息,请参阅 流转换器 (Stream Transformer)spring-doc.cadn.net.cn

集成图

我们添加了 IntegrationGraphServer,连同 IntegrationGraphController REST 服务,以将 Spring Integration 应用的运行时模型作为图进行暴露。 有关更多信息,请参阅 集成图spring-doc.cadn.net.cn

JDBC 锁注册表

我们为通过数据库表共享的分布式锁添加了JdbcLockRegistry。 有关更多信息,请参阅JDBC 锁注册中心spring-doc.cadn.net.cn

LeaderInitiator对于LockRegistry

我们基于 LockRegistry 策略添加了 LeaderInitiator 实现。 有关更多信息,请参阅 领导事件处理spring-doc.cadn.net.cn

常规变更

本节描述了 Spring Integration 4.3 版本带来的一般性变更。spring-doc.cadn.net.cn

核心变更

本节介绍 Spring Integration 核心部分的通用变更。spring-doc.cadn.net.cn

链中的出站网关

以前,您可以在链中的出站网关上指定 reply-channel。 该值会被完全忽略。 网关的回复会发送到下一个链元素;如果该网关是最后一个元素,则发送到链的输出通道。 现在系统会检测此情况并禁止使用。 如果您有这样的配置,请移除 reply-channelspring-doc.cadn.net.cn

异步服务激活器

我们添加了一个选项,使服务激活器能够同步执行。 有关更多信息,请参阅 异步服务激活器spring-doc.cadn.net.cn

消息注解支持变更

消息注解支持不需要在类级别声明@MessageEndpoint(或任何其他@Component)注解。 要恢复之前的行为,请将spring.integration.propertiesspring.integration.messagingAnnotations.require.componentAnnotation设置为true。 有关更多信息,请参阅全局属性注解支持spring-doc.cadn.net.cn

邮件变更

本节介绍 Spring Integration Mail 功能的一般性变更。spring-doc.cadn.net.cn

可自定义用户标志

可定制的 userFlag(在 4.2.2 版本中引入,用于提供对表示邮件已被阅读的标记的自定义支持)现在可在 XML 命名空间中使用了。 有关更多信息,请参阅 当不支持 Recent 时标记 IMAP 消息spring-doc.cadn.net.cn

邮件消息映射

您现在可以使用包含邮件头的 MessageHeaders 来映射入站邮件消息,其中负载(payload)包含电子邮件内容。 此前,负载始终是原始的 MimeMessage。 有关更多信息,请参阅 入站邮件消息映射spring-doc.cadn.net.cn

JMS 变更

本节描述了 Spring Integration JMS 功能的一般变更。spring-doc.cadn.net.cn

标题映射器

The DefaultJmsHeaderMapper now maps the standard correlationId header as a message property by invoking its toString() method. See Mapping Message Headers to and from JMS Message for more information.spring-doc.cadn.net.cn

异步网关

JMS 出站网关现在拥有一个async属性。 有关更多信息,请参阅异步网关spring-doc.cadn.net.cn

聚合器变更

当一个 POJO 聚合器释放包含 Message<?> 个对象的集合时,其行为会发生变化。 这种情况很少见,但如果您的应用程序确实如此操作,则需要对您的 POJO 进行小幅修改。 请参阅此 重要提示:SimpleMessageGroup.getMessages() 方法返回一个 unmodifiableCollection 以获取更多信息。spring-doc.cadn.net.cn

[[tcp/udp-changes]] === TCP/UDP 更改spring-doc.cadn.net.cn

本节描述了 Spring Integration TCP/UDP 功能的一般变更。spring-doc.cadn.net.cn

事件

当服务器连接工厂启动时,会发出一个新的 TcpConnectionServerListeningEvent。 有关更多信息,请参阅 TCP 连接事件spring-doc.cadn.net.cn

您现在可以在destination-expression上使用socket-expression属性。 有关更多信息,请参见UDP 适配器spring-doc.cadn.net.cn

流反序列化器

各种反序列化器现在支持将接收数据的原始缓冲区进行池化,而不是为每条消息创建并丢弃一个缓冲区,这些反序列化器此前无法在整条消息组装完成前分配最终缓冲区。 有关更多信息,请参见 TCP 连接工厂spring-doc.cadn.net.cn

TCP 消息映射器

现在的消息映射器可选地设置已配置的内容类型头。 有关更多信息,请参见IP 消息头spring-doc.cadn.net.cn

文件更改

本节介绍 Spring Integration 文件功能的一般变更。spring-doc.cadn.net.cn

创建目标目录

生成的文件名FileWritingMessageHandler可以表示为目标目录中保存所需文件目录结构的子路径。 有关更多信息,请参阅生成文件名spring-doc.cadn.net.cn

The FileReadingMessageSource now hides the WatchService directory scanning logic in the inner class. We added the use-watch-service and watch-events options to enable this behavior. We deprecated the top-level WatchServiceDirectoryScanner because of inconsistency around the API. See WatchServiceDirectoryScanner for more information.spring-doc.cadn.net.cn

缓冲区大小

编写文件时,现在可以指定缓冲区大小。spring-doc.cadn.net.cn

追加与刷新

您现在可以在追加时避免刷新文件,并使用多种策略在空闲期间刷新数据。 有关更多信息,请参阅 在使用 APPEND_NO_FLUSH 时刷新文件spring-doc.cadn.net.cn

保留时间戳

您现在可以配置出站通道适配器,以设置目标文件的lastmodified时间戳。 有关更多信息,请参阅文件时间戳spring-doc.cadn.net.cn

分割器更改

FileSplitter现在会在文件完全读取后自动关闭 FTP 或 SFTP 会话。 当出站网关返回InputStream或使用新的 FTP 或 SFTP 流式通道适配器时,此行为生效。 我们还引入了一个新的markers-json选项,用于将FileSplitter.FileMarker转换为 JSON String,以简化下游网络交互。 有关更多信息,请参阅文件拆分器spring-doc.cadn.net.cn

文件过滤器

我们将 ChainFileListFilter 作为 CompositeFileListFilter 的替代选项添加。 有关更多信息,请参阅 读取文件spring-doc.cadn.net.cn

AMQP 变更

本节介绍 Spring Integration AMQP 功能的一般变更。spring-doc.cadn.net.cn

内容类型消息转换器

现在,出站端点支持配置一个 RabbitTemplate,该端点可配合一个 ContentTypeDelegatingMessageConverter 使用,从而您能够根据消息内容类型选择转换器。 有关更多信息,请参阅 出站消息转换spring-doc.cadn.net.cn

延迟消息处理的标头

Spring AMQP 1.6 增加了对延迟消息交换的支持。 头映射现在支持该功能所使用的头 (amqp_delayamqp_receivedDelay)。spring-doc.cadn.net.cn

基于 AMQP 的通道

AMQP 支持的通道现在支持消息映射。 有关更多信息,请参见 AMQP 支持的通道spring-doc.cadn.net.cn

Redis 变更

本节描述了 Spring Integration Redis 功能的一般性更改。spring-doc.cadn.net.cn

[[list-push/pop-direction]] ==== 列表推入/弹出方向spring-doc.cadn.net.cn

之前,队列通道适配器总是以固定方向使用 Redis 列表,向左侧端点推送并向右侧端点读取。 现在,您可以为 RedisQueueMessageDrivenEndpointRedisQueueOutboundChannelAdapter 分别配置 rightPopleftPush 选项来设置读写方向。 有关更多信息,请参阅 Redis 队列入站通道适配器Redis 队列出站通道适配器spring-doc.cadn.net.cn

队列入站网关默认序列化器

入站网关的默认序列化器已更改为 JdkSerializationRedisSerializer,以便与出站网关兼容。 有关更多信息,请参阅 Redis 队列入站网关spring-doc.cadn.net.cn

HTTP 变更

此前,对于带有主体(例如 POST)且没有 content-type 头的请求,其主体会被忽略。 在此版本中,此类请求的内容类型被视为 application/octet-stream,符合 RFC 2616 的建议。 有关更多信息,请参阅 HTTP 入站组件spring-doc.cadn.net.cn

uriVariablesExpression now uses a SimpleEvaluationContext by default (since 4.3.15). See Mapping URI Variables for more information.spring-doc.cadn.net.cn

SFTP 更改

本节描述了对 Spring Integration SFTP 功能的通用更改。spring-doc.cadn.net.cn

工厂 Bean

我们添加了一个新的工厂 Bean,以简化 SFTP 的 Jsch 代理配置。 有关更多信息,请参见 JschProxyFactoryBeanspring-doc.cadn.net.cn

chmod变更

SFTP 出站网关(用于 putmput 命令)以及 SFTP 出站通道适配器现在支持 chmod 属性,以便在上传后更改远程文件的权限。 有关更多信息,请参阅 SFTP Outbound Channel AdapterSFTP Outbound Gatewayspring-doc.cadn.net.cn

FTP 变更

本节介绍 Spring Integration FTP 功能的一般变更。spring-doc.cadn.net.cn

会话变更

The FtpSession 现在支持用于 list()listNames() 方法的 null,因为底层 FTP Client 可以使用它。 有了这一点,您现在可以配置 FtpOutboundGateway 而无需 remoteDirectory 表达式。 您还可以配置 <int-ftp:inbound-channel-adapter> 而无需 remote-directoryremote-directory-expression。 有关更多信息,请参阅 FTP/FTPS 适配器spring-doc.cadn.net.cn

路由变更

The ErrorMessageExceptionTypeRouter 现在支持 Exception 超类映射,以避免在多个继承者存在相同通道时产生重复。 为此,ErrorMessageExceptionTypeRouter 在初始化期间加载映射类,以便在发生 ClassNotFoundException 时快速失败。spring-doc.cadn.net.cn

有关更多信息,请参见 路由器spring-doc.cadn.net.cn

页眉映射

本节描述了从 4.2 版本到 4.3 版本的请求头映射变更。spring-doc.cadn.net.cn

通用

AMQP、WS 和 XMPP 的头部映射(例如 request-header-mappingreply-header-mapping)现在支持否定模式。 有关更多信息,请参阅 AMQP 消息头部WS 消息头部 以及 XMPP 消息头部spring-doc.cadn.net.cn

AMQP 头映射

此前,默认情况下仅映射标准的 AMQP 头信息。 您必须显式启用用户定义头信息的映射。 在此版本中,所有头信息均默认进行映射。 此外,入站 amqp_deliveryMode 头信息不再默认进行映射。 有关更多信息,请参阅 AMQP 消息头信息spring-doc.cadn.net.cn

Groovy 脚本

您现在可以使用compile-static提示或任何其他CompilerConfiguration选项来配置 Groovy 脚本。 有关更多信息,请参阅Groovy 配置spring-doc.cadn.net.cn

@InboundChannelAdapter变更

The @InboundChannelAdapter now has an alias channel attribute for the regular value. In addition, the target SourcePollingChannelAdapter components can now resolve the target outputChannel bean from its provided name (outputChannelName options) in a late-binding manner. See Annotation Support for more information.spring-doc.cadn.net.cn

XMPP 变更

XMPP 通道适配器现在支持 XMPP 扩展(XEP)。 有关更多信息,请参见 XMPP 扩展spring-doc.cadn.net.cn

WireTap 后期绑定

The WireTap ChannelInterceptor now can accept a channelName that is resolved to the target MessageChannel later, during the first active interceptor operation. See Wire Tap for more information.spring-doc.cadn.net.cn

ChannelMessageStoreQueryProvider变更

The ChannelMessageStoreQueryProvider now supports H2 databases. See Backing Message Channels for more information.spring-doc.cadn.net.cn

WebSocket 变更

The ServerWebSocketContainer now exposes an allowedOrigins option, and SockJsServiceOptions exposes a suppressCors option. See WebSocket 支持 for more information.spring-doc.cadn.net.cn