对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
4.1 和 4.2 之间的更改
新组件
4.2 版添加了许多新组件。
主要管理/JMX 返工
我们添加了一个新的MetricsFactory
策略接口。
此更改以及 JMX 和管理基础架构中的其他更改提供了对管理配置和运行时性能的更多控制。
但是,这对(某些)用户环境有一些重要影响。
MongoDB 元数据存储
这MongoDbMetadataStore
现已推出。
有关更多信息,请参阅 MongoDB 元数据存储。
SecuredChannel 注释
我们引入了@SecuredChannel
注释,替换已弃用的ChannelSecurityInterceptorFactoryBean
.
有关更多信息,请参阅 Spring Integration 中的安全性。
SecurityContext
增殖
我们引入了SecurityContextPropagationChannelInterceptor
对于SecurityContext
从一个消息流的线程传播到另一个消息流的线程。
有关更多信息,请参阅 Spring Integration 中的安全性。
文件拆分器
在 4.1.2 中,我们添加了FileSplitter
,它将文本文件拆分为几行。
它现在在int-file:
Namespace。
有关更多信息,请参阅文件拆分器。
Zookeeper 支持
我们在框架中添加了 Zookeeper 支持,以便在集群或多主机环境中运行时提供帮助。 此更改会影响以下功能:
-
ZookeeperMetadataStore
-
ZookeeperLockRegistry
-
Zookeeper 领导层
有关更多信息,请参阅 Zookeeper 支持。
线程屏障
新线程<int:barrier/>
组件可用,让线程挂起,直到发生某些异步事件。
有关更多信息,请参阅线程屏障。
STOMP 支持
我们将 STOMP 支持作为入站和出站通道适配器对添加到框架中。 有关更多信息,请参阅 STOMP 支持。
Codec
一个新的Codec
引入了抽象,用于对对象进行编码和解码byte[]
.
我们添加了一个使用 Kryo 的实现。
我们还添加了基于编解码器的转换器和消息转换器。
有关详细信息,请参阅编解码器。
消息 PreparedStatement Setter
一个新的MessagePreparedStatementSetter
函数式接口回调可用于JdbcMessageHandler
(<int-jdbc:outbound-gateway>
和<int-jdbc:outbound-channel-adapter>
) 作为使用SqlParameterSourceFactory
以填充PreparedStatement
使用requestMessage
上下文。
有关详细信息,请参阅出站通道适配器。
一般更改
本节介绍从 4.1 版到 4.2 版的一般更改。
文件更改
有关这些更改的更多信息,请参阅文件支持。
班级套餐更改
我们移动了ScatterGatherHandler
类从org.springframework.integration.handler
到org.springframework.integration.scattergather
.
TCP 更改
本节介绍对 Spring Integration 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 SSLSession 可用于标头映射
TcpConnection
实现现在支持getSslSession()
允许您从会话中提取信息以添加到邮件标头。
有关详细信息,请参阅 IP 消息头。
TCP 事件
现在,每当发生关联异常时,都会发布新事件,例如将消息发送到不存在的套接字。
这TcpConnectionEventListeningMessageProducer
已弃用。
请改用通用事件适配器。
有关详细信息,请参阅 TCP 连接事件。
@InboundChannelAdapter
变化
以前,@Poller
在入站通道适配器上,默认为maxMessagesPerPoll
属性设置为-1
(无穷大)。
这与 XML 配置不一致<inbound-channel-adapter/>
,默认为1
.
注释现在将此属性默认为1
.
API 更改
o.s.integration.util.FunctionIterator
现在需要一个o.s.integration.util.Function
而不是reactor.function.Function
.
这样做是为了消除对 Reactor 不必要的硬依赖。
此迭代器的任何使用都需要更改导入。
Reactor 仍支持Promise
网关。
对于不需要依赖项的用户,该依赖项已删除。
JMS 更改
本节介绍对 Spring Integration TCP 功能的一般更改。
回复侦听器延迟初始化
现在,您可以将 JMS 出站网关中的应答侦听器配置为按需初始化并在空闲期后停止,而不是由网关的生命周期控制。 有关详细信息,请参阅出站网关。
默认确认模式
当使用隐式定义的DefaultMessageListenerContainer
,默认值acknowledge
现在transacted
.
我们建议使用transacted
使用此容器时,以避免消息丢失。
此默认值现在适用于消息驱动的入站适配器和入站网关。
它已经是 JMS 支持的通道的默认值。
共享订阅
我们向消息驱动的端点添加了对共享订阅 (JMS 2.0) 的命名空间支持,并且<int-jms:publish-subscribe-channel>
.
以前,您必须将侦听器容器连接到<bean/>
声明以使用共享连接。
有关更多信息,请参阅 JMS 支持。
AMQP 更改
本节介绍对 Spring Integration AMQP 功能的一般更改。
发布商确认
这<int-amqp:outbound-gateway>
现在支持confirm-correlation-expression
,confirm-ack-channel
和confirm-nack-channel
属性(其用途类似于<int-amqp:outbound-channel-adapter>
).
相关数据
对于出站通道适配器和入站网关,如果关联数据是Message<?>
,它成为 ack 或 nack 通道上消息的基础,并添加了其他标头。
以前,任何相关数据(包括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 Integration HTTP 功能的一般更改。
CORS
HTTP 入站端点 (<int-http:inbound-channel-adapter>
和<int-http:inbound-gateway>
) 现在允许
跨域资源共享 (CORS) 的配置。
有关详细信息,请参阅跨域资源共享 (CORS) 支持。
入站网关超时
您可以配置 HTTP 入站门方式,以便在请求超时时返回您指定的状态代码。
默认值为现在500 Internal Server Error
而不是200 OK
.
有关详细信息,请参阅响应状态代码。
表单数据
我们添加了代理文档multipart/form-data
请求。
有关更多信息,请参阅 HTTP 支持。
网关更改
本节介绍对 Spring Integration Gateway 功能的一般更改。
[[网关方法可以返回可完成未来<?>]]
==== 网关方法可以返回CompletableFuture<?>
使用 Java 8 时,网关方法现在可以返回CompletableFuture<?>
.
看CompletableFuture
了解更多信息。
MessagingGateway 注释
请求和回复超时属性现在是String
而不是Long
以允许使用属性占位符或 SpEL 进行配置。
看@MessagingGateway
注解.
聚合器更改
本节介绍对 Spring Integration 聚合器功能的一般更改。
聚合器性能
此版本包括一些聚合组件(聚合器、重排序器等)的性能改进,通过在发布消息时更有效地从组中删除消息。
新方法 (removeMessagesFromGroup
) 已添加到消息存储中。
将removeBatchSize
属性(默认:100
) 以调整每个作中删除的消息数。
目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。
输出消息组处理器
使用ref
或 inner bean 中,您现在可以直接绑定MessageGroupProcessor
.
此外,我们还添加了一个SimpleMessageGroupProcessor
返回组中的消息集合。
当输出处理器生成Message<?>
,聚合器会单独释放这些消息。
配置SimpleMessageGroupProcessor
使聚合器成为消息屏障,其中消息被保留,直到它们全部到达,然后单独释放。
有关详细信息,请参阅聚合器。
FTP 和 SFTP 更改
本节介绍对 Spring Integration FTP 和 SFTP 功能的一般更改。
入站通道适配器
您现在可以指定一个remote-directory-expression
在入站通道适配器上,以确定运行时的目录。
有关更多信息,请参阅 FTP/FTPS 适配器和 SFTP 适配器。
默认 Sftp 会话工厂
以前,DefaultSftpSessionFactory
无条件允许与未知主机的连接。
现在可以配置(默认:false
).
工厂现在需要配置的knownHosts
,除非allowUnknownKeys
属性是true
(默认值:false
).
Websocket 更改
我们添加了WebSocketHandlerDecoratorFactory
支持ServerWebSocketContainer
允许对内部WebSocketHandler
.
有关详细信息,请参阅 WebSockets 命名空间支持。
应用程序事件适配器更改
这ApplicationEvent
适配器现在可以与payload
作为event
直接允许省略自定义ApplicationEvent
扩展。
为此,我们引入了publish-payload
boolean 属性已引入<int-event:outbound-channel-adapter>
.
看SpringApplicationEvent
支持了解更多信息。