此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
5.0 和 5.1 之间的更改
新组件
以下组件是 5.1 中的新增组件:
AmqpDedicatedChannelAdvice
请参阅严格消息排序。
@LongRunningTest
一个 JUnit 5@LongRunningTest
提供条件注释以检查RUN_LONG_INTEGRATION_TESTS
条目,值为true
以确定是否应运行或跳过测试。
请参阅 JUnit 规则和条件。
一般更改
在 5.1 版中进行了以下更改:
Java DSL
这IntegrationFlowContext
现在是一个接口,并且IntegrationFlowRegistration
是IntegrationFlowContext
.
一个新的logAndReply()
引入运算符是为了方便您希望在请求-回复配置的流末尾进行日志记录时。这避免了与log()
它被视为单向端流组件。
为任何NamedComponent
集成流现在基于组件类型,以便可视化工具、日志分析器和指标收集器具有更好的可读性。
这GenericHandler.handle()
现在除了MessageHeaders
type 为第二个参数。
调度程序异常
捕获并重新引发的异常AbstractDispatcher
现在更加一致:
-
一个
MessagingException
任何类型的failedMessage
属性被重新抛出,原封不动。 -
所有其他异常都包装在
MessageDeliveryException
使用failedMessage
属性集。
以前:
-
一个
MessagingException
任何类型的failedMessage
财产被重新抛弃,原封不动 -
一个
MessagingException
没有failedMessage
属性被包装在MessagingException
使用failedMessage
属性集。 -
其他
RuntimeException
实例被重新抛出,保持不变。 -
检查的异常被包装在
MessageDeliveryException
使用failedMessage
属性集。
全球通道拦截器
全局通道拦截器现在适用于动态注册的通道,例如通过IntegrationFlowContext
使用 Java DSL 或使用beanFactory.initializeBean()
.
以前,在刷新应用程序上下文后创建 Bean 时,不会应用拦截器。
通道拦截器
ChannelInterceptor.postReceive()
当没有收到消息时,不再调用;不再需要检查null
Message<?>
.
以前,调用了该方法。
如果你有一个依赖于先前行为的拦截器,请实现afterReceiveCompleted()
相反,由于调用了该方法,因此无论是否收到消息。
此外,PolledAmqpChannel
和PolledJmsChannel
以前没有调用afterReceiveCompleted()
跟null
;他们现在做到了。
集成流:生成的 Bean 名称
从版本 5.0.5 开始,为IntegrationFlow
包括 Flow Bean 名称,后跟一个点作为前缀。
例如,如果流 Bean 的名称为flowBean
,生成的 Bean 可能被命名为flowBean.generatedBean
.
请参阅使用消息流以获取更多信息。
聚合器更改
如果groupTimeout
的计算结果为负值,则聚合器现在会立即使组过期。
只null
被视为对当前消息不执行任何作的信号。
一个新的popSequence
属性已引入以允许(默认情况下)调用MessageBuilder.popSequenceDetails()
用于输出消息。
还有一个AbstractAggregatingMessageGroupProcessor
现在返回一个AbstractIntegrationMessageBuilder
而不是整体Message
用于优化。
有关详细信息,请参阅聚合器。
@Publisher注释更改
从 5.1 版开始,您必须显式启用@Publisher
AOP 功能,使用@EnablePublisher
或使用<int:enable-publisher>
child 元素<int:annotation-config>
.
此外,proxy-target-class
和order
已添加用于调整ProxyFactory
配置。
看注释驱动的配置,其中包含@Publisher
注解了解更多信息。
文件更改
如果您正在使用FileExistsMode.APPEND
或FileExistsMode.APPEND_NO_FLUSH
你可以提供一个newFileCallback
将在创建新文件时调用。
此回调接收新创建的文件和触发回调的消息。
例如,这可用于编写 CSV 标头。
这FileReadingMessageSource
now 不会检查和创建目录,直到其start()
被称为。
因此,如果FileReadingMessageSource
有autoStartup = false
,则在应用程序启动期间没有针对文件系统的故障。
有关更多信息,请参阅文件支持。
AMQP 更改
我们已经使ID
和Timestamp
标头映射更改DefaultAmqpHeaderMapper
.
有关详细信息,请参阅 AMQP 消息头底部附近的注释。
这contentType
header 现在已正确映射为常规标头映射中的条目。
有关详细信息,请参阅 contentType 标头。
从版本 5.1.3 开始,如果在使用手动确认时发生消息转换异常,并且定义了错误通道,则有效负载是ManualAckListenerExecutionFailedException
加上channel
和deliveryTag
性能。
这使错误流能够确认/nack原始消息。
有关详细信息,请参阅入站消息转换。
JDBC 更改
令人困惑max-rows-per-poll
JDBC Inbound Channel Adapter 和 JDBC Outbound Gateway 上的属性已被弃用,取而代之的是新引入的max-rows
财产。
这JdbcMessageHandler
现在支持batchUpdate
当请求消息的有效负载是Iterable
类型。
的索引INT_CHANNEL_MESSAGE
表(对于JdbcChannelMessageStore
)已优化。
如果此类存储中有大型消息组,则可能希望更改索引。
有关更多信息,请参阅 JDBC 支持。
FTP 和 SFTP 更改
一个RotatingServerAdvice
现在可用于使用入站通道适配器轮询多个服务器和目录。
有关详细信息,请参阅入站通道适配器:轮询多个服务器和目录和入站通道适配器:轮询多个服务器和目录。
此外,入站适配器localFilenameExpression
实例可以包含#remoteDirectory
变量,其中包含正在轮询的远程目录。
比较器的泛型类型(用于对流适配器的提取文件列表进行排序)已从Comparator<AbstractFileInfo<F>>
自Comparator<F>
.
有关详细信息,请参阅 FTP 流式入站通道适配器和 SFTP 流式入站通道适配器。
此外,现在可以为入站通道适配器的同步器提供Comparator
.
这在使用maxFetchSize
以限制检索到的文件。
这CachingSessionFactory
有一个新属性testSession
当 true 时,会导致工厂执行test()
对Session
从缓存中签出现有会话时。
TCP 支持
使用 SSL 时,默认情况下,现在启用主机验证,以防止使用受信任证书进行中间人攻击。 有关详细信息,请参阅主机验证。
此外,现在可以在DefaultTcpSSLContextSupport
.
Twitter 支持
由于 Spring Social 项目已移至生命周期结束状态,因此 Spring Integration 中的 Twitter 支持已移至 Extensions 项目。 有关更多信息,请参阅 Spring Integration Social Twitter。
JMS 支持
这JmsSendingMessageHandler
现在提供deliveryModeExpression
和timeToLiveExpression
选项来确定 JMS 消息在运行时发送的相应 QoS 选项。
这DefaultJmsHeaderMapper
现在允许映射入站JMSDeliveryMode
和JMSExpiration
属性通过设置为true
各自setMapInboundDeliveryMode()
和setMapInboundExpiration()
选项。
当JmsMessageDrivenEndpoint
或JmsInboundGateway
已停止,则关联的侦听器容器现在已关闭;这将关闭其共享连接和任何消费者。
您可以将端点配置为恢复到以前的行为。
有关更多信息,请参阅 JMS 支持。
HTTP/WebFlux 支持
这statusCodeExpression
(和Function
) 现在与RequestEntity<?>
作为评估上下文的根对象,因此请求标头、方法、URI 和正文可用于目标状态代码计算。
有关更多信息,请参阅 HTTP 支持和 WebFlux 支持。
JMX 更改
如果对象名称键值包含 Java 标识符(或句点)中允许的字符以外的任何字符,则现在会引用.
).
例如org.springframework.integration:type=MessageChannel,
name="input:foo.myGroup.errors"
.
这有一个副作用,即以前“允许”的带有此类字符的名称现在将被引用。
例如org.springframework.integration:type=MessageChannel,
name="input#foo.myGroup.errors"
.
千分尺支架变更
现在,自定义框架创建的标准千分尺仪表变得更加简单。 有关更多信息,请参阅千分尺集成。
集成图自定义
现在可以向IntegrationNode
通过Function<NamedComponent, Map<String, Object>> additionalPropertiesCallback
在IntegrationGraphServer
.
有关更多信息,请参阅集成图。
集成全局属性
现在可以在日志中打印集成全局属性(包括默认值),当DEBUG
逻辑级别已打开org.springframework.integration
类别。
有关详细信息,请参阅全局属性。
这receiveTimeout
为@Poller
这@Poller
注释现在提供receiveTimeout
方便的选项。
看使用@Poller
注解了解更多信息。