4.1 和 4.2 之间的更改
新组件
版本 4.2 添加了许多新组件。
主要管理/JMX 返工
我们添加了一个新的MetricsFactory
strategy 界面。
此更改以及 JMX 和管理基础结构中的其他更改,提供了对管理配置和运行时性能的更多控制。
但是,这对 (某些) 用户环境有一些重要影响。
MongoDB 元数据存储
这MongoDbMetadataStore
现已推出。
有关更多信息,请参阅 MongoDB 元数据存储。
SecuredChannel 注解
我们引入了@SecuredChannel
注解,替换已弃用的ChannelSecurityInterceptorFactoryBean
.
有关更多信息,请参阅 Spring Integration 中的安全性。
SecurityContext
增殖
我们引入了SecurityContextPropagationChannelInterceptor
对于SecurityContext
从一个消息流的线程传播到另一个消息流的线程。
有关更多信息,请参阅 Spring Integration 中的安全性。
FileSplitter 文件拆分器
在 4.1.2 中,我们添加了FileSplitter
,它将文本文件拆分为多行。
现在,它在int-file:
Namespace。
有关更多信息,请参阅 File Splitter 。
Zookeeper 支持
我们向框架添加了 Zookeeper 支持,以便在集群或多主机环境中运行时提供帮助。 此更改会影响以下功能:
-
ZookeeperMetadataStore
-
ZookeeperLockRegistry
-
Zookeeper 领导层
有关更多信息,请参阅 Zookeeper 支持。
线程屏障
新线程<int:barrier/>
组件可用,让线程暂停,直到发生某些异步事件。
有关更多信息,请参见 Thread Barrier。
STOMP 支持
我们向框架添加了 STOMP 支持作为入站和出站通道适配器对。 有关更多信息,请参阅 STOMP 支持。
Codec
新的Codec
引入了 abstraction 来对对象进行编码和解码byte[]
.
我们添加了一个使用 Kryo 的实现。
我们还添加了基于编解码器的转换器和消息转换器。
有关更多信息,请参阅 编解码器 。
消息 PreparedStatement Setter
新的MessagePreparedStatementSetter
函数接口回调可用于JdbcMessageHandler
(<int-jdbc:outbound-gateway>
和<int-jdbc:outbound-channel-adapter>
) 作为使用SqlParameterSourceFactory
要在PreparedStatement
使用requestMessage
上下文。
有关更多信息,请参阅 Outbound Channel Adapter 。
一般更改
本节介绍从版本 4.1 到版本 4.2 的一般更改。
文件更改
有关这些更改的更多信息,请参阅文件支持。
类套餐更改
我们将ScatterGatherHandler
类org.springframework.integration.handler
到org.springframework.integration.scattergather
.
TCP 更改
本节描述了对 Spring 集成 TCP 功能的一般更改。
TCP 序列化程序
The TCPSerializers
不再flush()
这OutputStream
.
现在,这是由TcpNxxConnection
类。
如果直接在代码中使用序列化程序,则可能需要flush()
这OutputStream
.
服务器套接字异常
TcpConnectionServerExceptionEvent
现在,每当 TCP 服务器套接字(也添加到 4.1.3 和 4.0.7)上发生意外异常时,都会发布实例。
有关更多信息,请参阅 TCP 连接事件。
TCP 服务器端口
如果将 TCP 服务器套接字工厂配置为侦听随机端口,则现在可以使用getPort()
.getServerSocketAddress()
也可用。
有关更多信息,请参阅“TCP 连接工厂”。
TCP 网关远程超时
这TcpOutboundGateway
现在支持remote-timeout-expression
作为现有remote-timeout
属性。
这允许根据每条消息设置超时。
此外,remote-timeout
不再默认为reply-timeout
,它具有完全不同的含义。
请参阅 。TCP 出站网关属性 (TCP Outbound Gateway Attributes) 了解更多信息。
TCP SSLSession 可用于标头映射
TcpConnection
实施现在支持getSslSession()
允许您从会话中提取信息以添加到 Message Headers。
有关更多信息,请参阅 IP 消息报头。
TCP 事件
现在,每当发生关联异常时(例如,将消息发送到不存在的套接字),都会发布新事件。
这TcpConnectionEventListeningMessageProducer
已弃用。
请改用泛型事件适配器。
有关更多信息,请参阅 TCP 连接事件。
@InboundChannelAdapter
变化
以前,@Poller
在入站通道适配器上,默认使用maxMessagesPerPoll
属性设置为-1
(无穷大)。
这与<inbound-channel-adapter/>
,默认为1
.
注解现在将此属性默认为1
.
API 变更
o.s.integration.util.FunctionIterator
现在需要一个o.s.integration.util.Function
而不是reactor.function.Function
.
这样做是为了消除对 Reactor 的不必要的硬依赖。
此迭代器的任何使用都需要更改导入。
Reactor 仍然支持诸如Promise
网关。
对于不需要依赖项的用户,已删除依赖项。
JMS 更改
本节描述了对 Spring 集成 TCP 功能的一般更改。
Reply 侦听器延迟初始化
您现在可以将 JMS 出站网关中的回复侦听器配置为按需初始化并在空闲期后停止,而不是由网关的生命周期控制。 有关更多信息,请参阅出站网关。
默认确认模式
当使用隐式定义的DefaultMessageListenerContainer
,则默认的acknowledge
现在是transacted
.
我们建议使用transacted
使用此容器时,以避免消息丢失。
此默认值现在适用于消息驱动的入站适配器和入站网关。
它已经是 JMS 支持的通道的默认通道。
有关更多信息,请参阅消息驱动的通道适配器和入站网关。
共享订阅
我们向消息驱动端点添加了对共享订阅 (JMS 2.0) 的命名空间支持,并将<int-jms:publish-subscribe-channel>
.
以前,您必须将侦听器容器连接为<bean/>
声明以使用共享连接。
有关更多信息,请参阅 JMS 支持。
AMQP 更改
本节描述了对 Spring 集成 AMQP 功能的一般更改。
发布者确认
这<int-amqp:outbound-gateway>
现在支持confirm-correlation-expression
,confirm-ack-channel
和confirm-nack-channel
属性(其用途类似于<int-amqp:outbound-channel-adapter>
).
关联数据
对于出站通道适配器和入站网关,如果关联数据是Message<?>
,它将成为 ACK 或 NACK 通道上消息的基础,并添加了额外的 Headers。
以前,任何关联数据(包括Message<?>
) 作为 ACK 或 NACK 消息的有效负载返回。
入站网关属性
这<int-amqp:inbound-gateway>
现在公开了amqp-template
属性以允许对回复的外部 bean 进行更多控制RabbitTemplate
.
您也可以提供自己的AmqpTemplate
实现。
此外,您还可以使用default-reply-to
如果请求消息没有replyTo
财产。
有关更多信息,请参阅 AMQP 支持。
XPath Splitter 改进
这XPathMessageSplitter
(<int-xml:xpath-splitter>
) 现在允许配置output-properties
对于内部javax.xml.transform.Transformer
并支持Iterator
mode(默认为true
) 进行 XPath 评估org.w3c.dom.NodeList
结果。
有关更多信息,请参阅拆分 XML 消息。
HTTP 更改
本节描述了对 Spring 集成 HTTP 功能的一般更改。
CORS
HTTP 入站终端节点 (<int-http:inbound-channel-adapter>
和<int-http:inbound-gateway>
) 现在允许
跨域资源共享 (CORS) 的配置。
有关更多信息,请参阅跨源资源共享 (CORS) 支持。
入站网关超时
您可以配置 HTTP 入站入口方式,以便在请求超时时返回您指定的状态代码。
默认值为 now500 Internal Server Error
而不是200 OK
.
有关更多信息,请参阅响应状态代码。
表单数据
我们添加了代理文档multipart/form-data
请求。
有关更多信息,请参阅 HTTP 支持。
网关更改
本节描述了对 Spring Integration Gateway 功能的一般更改。
[[gateway-methods-can-return-completablefuture<?>]]
==== 网关方法可以返回CompletableFuture<?>
使用 Java 8 时,网关方法现在可以返回CompletableFuture<?>
.
看CompletableFuture
了解更多信息。
MessagingGateway 注释
请求和回复超时属性现在是String
而不是Long
以允许使用属性占位符或 SPEL 进行配置。
看@MessagingGateway
注解.
聚合商更改
本节描述了对 Spring 集成聚合器功能的一般更改。
聚合商性能
此版本包括聚合组件(聚合器、resequencer 等)的一些性能改进,方法是在发布消息时更有效地从组中删除消息。
新方法 (removeMessagesFromGroup
) 已添加到邮件存储中。
将removeBatchSize
属性(默认值:100
) 调整每次作中删除的消息数量。
目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。
输出消息组处理器
当使用ref
或内部 Bean 中,您现在可以直接绑定MessageGroupProcessor
.
此外,我们还添加了一个SimpleMessageGroupProcessor
,这将返回组中的消息集合。
当输出处理器生成Message<?>
,则聚合器会单独释放这些消息。
配置SimpleMessageGroupProcessor
使 Aggregator 成为消息屏障,其中消息被保留,直到它们全部到达,然后单独发布。
有关更多信息,请参阅 Aggregator。
FTP 和 SFTP 更改
本节描述了对 Spring 集成 FTP 和 SFTP 功能的一般更改。
入站通道适配器
您现在可以指定remote-directory-expression
在入站通道适配器上,确定运行时的目录。
有关更多信息,请参阅 FTP/FTPS 适配器和 SFTP 适配器。
委派 Session Factory
我们添加了一个委托会话工厂,允许根据某些线程上下文值选择特定的会话工厂。
有关更多信息,请参阅委派 Session Factory 和委派 Session Factory。
默认 sftp 会话工厂
以前,DefaultSftpSessionFactory
无条件允许连接到未知主机。
这现在可以配置(默认:false
).
工厂现在需要一个配置的knownHosts
、文件,除非allowUnknownKeys
property 为true
(默认:false
).
Websocket 更改
我们添加了WebSocketHandlerDecoratorFactory
支持ServerWebSocketContainer
允许对内部WebSocketHandler
.
有关更多信息,请参阅 WebSockets 命名空间支持。
应用程序事件适配器更改
这ApplicationEvent
适配器现在可以与payload
作为event
直接允许省略自定义ApplicationEvent
扩展。
为此,我们引入了publish-payload
boolean 属性已引入<int-event:outbound-channel-adapter>
.
看SpringApplicationEvent
支持了解更多信息。