4.1 和 4.2 之间的更改
新组件
4.2 版添加了许多新组件。
主要管理/JMX 重构
我们添加了一个新的 MetricsFactory 策略接口。此更改与 JMX 和管理基础设施中的其他更改一起,提供了对管理配置和运行时性能的更多控制。
但是,这对于(某些)用户环境具有一些重要影响。
MongoDB 元数据存储
现在可以使用 MongoDbMetadataStore。有关更多信息,请参阅MongoDB 元数据存储。
SecuredChannel 注解
我们引入了 @SecuredChannel 注解,取代了已弃用的 ChannelSecurityInterceptorFactoryBean。有关更多信息,请参阅Spring Integration 中的安全性。
SecurityContext 传播
我们引入了 SecurityContextPropagationChannelInterceptor 用于将 SecurityContext 从一个消息流的线程传播到另一个线程。有关更多信息,请参阅Spring Integration 中的安全性。
FileSplitter
在 4.1.2 中,我们添加了 FileSplitter,它将文本文件拆分为行。它现在在 int-file: 命名空间中具有完全支持。有关更多信息,请参阅文件拆分器。
Zookeeper 支持
我们为框架添加了 Zookeeper 支持,以帮助在集群或多主机环境中运行。此更改会影响以下功能
-
ZookeeperMetadataStore -
ZookeeperLockRegistry -
Zookeeper Leader 选举
有关更多信息,请参阅Zookeeper 支持。
线程屏障
一个新的线程 <int:barrier/> 组件可用,允许线程暂停,直到发生某个异步事件。有关更多信息,请参阅线程屏障。
STOMP 支持
我们为框架添加了 STOMP 支持,作为入站和出站通道适配器对。有关更多信息,请参阅STOMP 支持。
编解码器
引入了一个新的 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 序列化器
TCP Serializers 不再 flush() OutputStream。现在由 TcpNxxConnection 类完成。如果您在代码中直接使用序列化器,则可能必须 flush() OutputStream。
服务器套接字异常
每当 TCP 服务器套接字上发生意外异常时,都会发布 TcpConnectionServerExceptionEvent 实例(也添加到 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(无限)。这与 <inbound-channel-adapter/> 的 XML 配置不一致,后者默认为 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 支持的通道的默认值。
共享订阅
我们为消息驱动端点和 <int-jms:publish-subscribe-channel> 添加了对共享订阅 (JMS 2.0) 的命名空间支持。以前,您必须将侦听器容器作为 <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 属性,以允许对回复 RabbitTemplate 的外部 bean 进行更多控制。您还可以提供自己的 AmqpTemplate 实现。此外,如果请求消息没有 replyTo 属性,您可以使用 default-reply-to。
有关更多信息,请参阅AMQP 支持。
XPath 拆分器改进
XPathMessageSplitter (<int-xml:xpath-splitter>) 现在允许为内部 javax.xml.transform.Transformer 配置 output-properties,并支持 XPath 评估 org.w3c.dom.NodeList 结果的 Iterator 模式(默认为 true)。
有关更多信息,请参阅拆分 XML 消息。
HTTP 更改
本节描述了 Spring Integration HTTP 功能的一般更改。
CORS
HTTP 入站端点 (<int-http:inbound-channel-adapter> 和 <int-http:inbound-gateway>) 现在允许配置跨域资源共享 (CORS)。
有关更多信息,请参阅跨域资源共享 (CORS) 支持。
表单数据
我们添加了代理 multipart/form-data 请求的文档。有关更多信息,请参阅HTTP 支持。
网关更改
本节描述了 Spring Integration 网关功能的一般更改。
[[gateway-methods-can-return-completablefuture<?>]] ==== 网关方法可以返回 CompletableFuture<?>
使用 Java 8 时,网关方法现在可以返回 CompletableFuture<?>。有关更多信息,请参阅CompletableFuture。
MessagingGateway 注解
请求和回复超时属性现在是 String 而不是 Long,以允许使用属性占位符或 SpEL 进行配置。请参阅@MessagingGateway 注解。
聚合器更改
本节描述了 Spring Integration 聚合器功能的一般更改。
聚合器性能
此版本包括聚合组件(聚合器、重新排序器等)的一些性能改进,通过在释放消息时更有效地从组中删除消息。已将新方法 (removeMessagesFromGroup) 添加到消息存储。设置 removeBatchSize 属性(默认值:100)以调整每次操作中删除的消息数量。目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。
输出消息组处理器
当为聚合器使用 ref 或内部 bean 时,您现在可以直接绑定 MessageGroupProcessor。此外,我们添加了一个 SimpleMessageGroupProcessor,它返回组中的消息集合。当输出处理器生成 Message<?> 集合时,聚合器会单独释放这些消息。配置 SimpleMessageGroupProcessor 使聚合器成为消息屏障,其中消息被 удержи直到它们全部到达,然后单独释放。有关更多信息,请参阅聚合器。
FTP 和 SFTP 更改
本节描述了 Spring Integration FTP 和 SFTP 功能的一般更改。
入站通道适配器
您现在可以在入站通道适配器上指定 remote-directory-expression,以在运行时确定目录。有关更多信息,请参阅FTP/FTPS 适配器和SFTP 适配器。
默认 Sftp 会话工厂
以前,DefaultSftpSessionFactory 无条件地允许连接到未知主机。现在这可以配置(默认值:false)。
除非 allowUnknownKeys 属性为 true(默认值:false),否则工厂现在需要配置的 knownHosts 文件。
消息会话回调
我们引入了 MessageSessionCallback<F, T>,用于在 <int-(s)ftp:outbound-gateway/> 中使用 requestMessage 上下文执行任何自定义 Session 操作。
有关更多信息,请参阅使用 MessageSessionCallback 和MessageSessionCallback。
Websocket 更改
我们向 ServerWebSocketContainer 添加了 WebSocketHandlerDecoratorFactory 支持,以允许对内部 WebSocketHandler 进行链式定制。有关更多信息,请参阅WebSockets 命名空间支持。
应用程序事件适配器更改
ApplicationEvent 适配器现在可以使用 payload 作为 event,以直接允许省略自定义 ApplicationEvent 扩展。为此,我们在 <int-event:outbound-channel-adapter> 上引入了 publish-payload 布尔属性。有关更多信息,请参阅Spring ApplicationEvent 支持。