4.2 和 4.3 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 Wiki 上找到 2.1 之前所有版本的迁移指南。

新组件

版本 4.3 添加了许多新组件。

AMQP 异步出站网关

MessageGroupFactory

我们引入了MessageGroupFactory允许控制MessageGroup中的 实例MessageGroupStore逻辑。 我们添加了SimpleMessageGroupFactory实现SimpleMessageGroup,使用GroupType.HASH_SET作为默认值 工厂为 标准MessageGroupStore实现。 有关更多信息,请参阅 Message Store

PersistentMessageGroup

我们添加了PersistentMessageGroup(lazy-load proxy) 实现MessageGroupStore实例 返回getMessageGroup()当他们的lazyLoadMessageGroupstrue(默认值)。 有关更多信息,请参阅 Message Store

FTP 和 SFTP 流入站通道适配器

我们添加了入站通道适配器,这些适配器返回InputStream,允许您检索远程文件,而无需将其写入本地文件系统。 有关更多信息,请参阅 FTP 流入站通道适配器SFTP 流入站通道适配器

StreamTransformer

我们添加了StreamTransformer要将InputStreampayload 复制到byte[]String. 有关更多信息,请参阅 Stream Transformer

集成图

我们添加了IntegrationGraphServerIntegrationGraphControllerREST 服务,将 Spring Integration 应用程序的运行时模型公开为图形。 有关更多信息,请参阅 Integration Graph

JDBC Lock Registry

我们添加了JdbcLockRegistry对于通过数据库表共享的分布式锁。 有关更多信息,请参阅 JDBC Lock Registry

LeaderInitiatorLockRegistry

我们添加了LeaderInitiator基于LockRegistry策略。 有关更多信息,请参阅 领导事件处理

一般更改

本节描述了版本 4.3 为 Spring 集成带来的一般更改。

核心变更

本节描述了对 Spring 集成核心的一般更改。

链中的出站网关

以前,您可以指定reply-channel在链内的出站网关上。 它完全被忽视了。 gateway 的回复将转到下一个 chain element,或者,如果 gateway 是最后一个 element,则返回到 chain 的 output channel。 现在,系统会检测并禁止此情况。 如果您有这样的配置,请删除reply-channel.

异步服务激活器

我们添加了一个选项,使服务激活器同步。 有关更多信息,请参阅 Asynchronous Service Activator

消息注释支持更改

消息传递注释支持不需要@MessageEndpoint(或任何其他@Component) 注解声明。 要恢复之前的行为,请将spring.integration.messagingAnnotations.require.componentAnnotationspring.integration.propertiestrue. 有关更多信息,请参阅全局属性注释支持

邮件更改

本节描述了对 Spring 集成邮件功能的一般更改。

可自定义的用户标志

可定制的userFlag(在 4.2.2 中添加,以提供用于表示邮件已 seen) 现在在 XML 命名空间中可用。 看在以下情况下标记 IMAP 邮件Recent不支持了解更多信息。

邮件消息映射

现在,您可以使用MessageHeaders包含邮件标头和包含电子邮件内容的有效负载。 以前,有效负载始终是原始的MimeMessage. 有关更多信息,请参阅入站邮件映射

JMS 更改

本节描述了对 Spring 集成 JMS 功能的一般更改。

标头映射器

DefaultJmsHeaderMapper现在映射标准correlationIdheader 作为 Message 属性,方法是调用其toString()方法。 有关更多信息,请参见Mapping Message Headers to and from JMS Message

异步网关

JMS 出站网关现在有一个async财产。 有关更多信息,请参阅异步网关

Aggregator 更改

当 POJO 聚合器发布Message<?>对象。 这种情况很少见,但是,如果您的应用程序这样做,则需要对 POJO 进行少量更改。 查看此内容重要说明:SimpleMessageGroup.getMessages()method 返回一个unmodifiableCollection.注意以了解更多信息。

[[tcp/udp 更改]] === TCP/UDP 更改

本节描述了对 Spring 集成 TCP/UDP 功能的一般更改。

事件

新的TcpConnectionServerListeningEvent在启动 Server Connection Factory 时发出。 有关更多信息,请参阅 TCP 连接事件

您现在可以使用destination-expressionsocket-expressionattributes 开启<int-ip:udp-outbound-channel-adapter>. 有关更多信息,请参阅 UDP 适配器

流反序列化器

在组装整个消息之前无法分配最终缓冲区的各种反序列化器现在支持池化接收数据的原始缓冲区,而不是为每个消息创建和丢弃缓冲区。 有关更多信息,请参阅 TCP 连接工厂

TCP 消息映射器

消息映射器现在可以选择设置配置的内容类型标头。 有关更多信息,请参阅 IP 消息报头

文件更改

本节描述了对 Spring 集成文件功能的一般更改。

目标目录创建

FileWritingMessageHandler可以表示一个子路径,用于在目标目录中保存文件的所需目录结构。 有关更多信息,请参阅生成文件名

FileReadingMessageSource现在隐藏了WatchService目录扫描逻辑。 我们添加了use-watch-servicewatch-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_delayamqp_receivedDelay) 中。

AMQP 支持的通道

AMQP 支持的通道现在支持消息映射。 有关更多信息,请参见 AMQP 支持的消息通道

Redis 更改

本节描述了 Spring Integration Redis 功能的一般更改。

[[列表推送/弹出方向]] ==== 列表推/弹出方向

以前,队列通道适配器总是在固定方向上使用 Redis 列表,推送到左端并从右端读取。 现在,您可以使用rightPopleftPush选项RedisQueueMessageDrivenEndpointRedisQueueOutboundChannelAdapter分别。 有关更多信息,请参阅 Redis Queue Inbound Channel AdapterRedis 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 功能的一般更改。

工厂 Bean

我们添加了一个新的工厂 Bean 来简化 SFTP 的 Jsch 代理的配置。 看JschProxyFactoryBean了解更多信息。

chmod变化

SFTP 出站网关(用于putmput命令),并且 SFTP 出站通道适配器现在支持chmod属性以在上传后更改远程文件权限。 看SFTP Outbound Channel AdapterSFTP Outbound Gateway了解更多信息。

FTP 更改

本节描述了对 Spring 集成 FTP 功能的一般更改。

会话更改

FtpSession现在支持null对于list()listNames()方法,因为底层 FTP 客户端可以使用它。 这样,您现在可以配置FtpOutboundGateway如果没有remoteDirectory表达。 您还可以配置<int-ftp:inbound-channel-adapter>没有remote-directoryremote-directory-expression. 有关更多信息,请参阅 FTP/FTPS 适配器

路由器更改

ErrorMessageExceptionTypeRouter现在支持Exception超类映射,以避免在多个继承者的情况下同一通道重复。 为此,ErrorMessageExceptionTypeRouter在初始化期间加载映射类以快速失败ClassNotFoundException.

标头映射

本节介绍版本 4.2 和 4.3 之间标头映射的更改。

常规

AMQP、WS 和 XMPP 标头映射(例如request-header-mappingreply-header-mapping) 现在支持否定模式。 有关更多信息,请参阅 AMQP 消息头WS 消息头XMPP 消息头

AMQP 标头映射

以前,默认情况下仅映射标准 AMQP 标头。 您必须显式启用用户定义的标头的映射。 在此版本中,默认情况下会映射所有标头。 此外,入站amqp_deliveryMode默认情况下,不再映射 header。 有关更多信息,请参阅 AMQP 消息标头

Groovy 脚本

现在,您可以使用compile-static提示或任何其他CompilerConfiguration选项。 有关更多信息,请参阅 Groovy 配置

@InboundChannelAdapter变化

@InboundChannelAdapter现在有一个别名channel属性value. 此外,目标SourcePollingChannelAdapter组件现在可以解析目标outputChannelbean 从其提供的名称 (outputChannelNameoptions) 中。 有关更多信息,请参阅 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 支持


APP信息