此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
4.3 和 5.0 之间的更改
新组件
5.0 版添加了许多新组件。
Java DSL
单独的 Spring Integration Java DSL 项目现在已合并到核心 Spring Integration 项目中。
这IntegrationComponentSpec
通道适配器和网关的实现分发到其特定模块。
有关 Java DSL 支持的更多信息,请参阅 Java DSL。
另请参阅 4.3 到 5.0 迁移指南,了解迁移到 Spring Integration 5.0 所需的步骤。
测试支持
我们创建了一个新的 Spring Integration 测试框架来帮助测试 Spring Integration 应用程序。
现在,使用@SpringIntegrationTest
测试类上的注释和MockIntegration
factory,您可以使集成流的 JUnit 测试变得更容易一些。
有关更多信息,请参阅测试支持。
内容类型转换
现在我们使用新的InvocableHandlerMethod
基于服务方法调用的基础设施,我们可以执行contentType
从有效负载转换为目标方法参数。
有关详细信息,请参阅内容类型转换。
ErrorMessagePublisher
和ErrorMessageStrategy
我们添加了ErrorMessagePublisher
和ErrorMessageStrategy
用于创建ErrorMessage
实例。
有关详细信息,请参阅错误处理。
一般更改
Spring Integration 现在完全基于 Spring Framework5.0
和反应堆项目3.1
.
不再支持以前的 Project Reactor 版本。
核心变更
这@Poller
注释现在具有errorChannel
属性,以便更轻松地配置底层MessagePublishingErrorHandler
.
有关更多信息,请参阅注释支持。
所有请求-回复端点(基于AbstractReplyProducingMessageHandler
) 现在可以启动事务,因此使整个下游流成为事务性。
有关更多信息,请参阅事务支持。
这SmartLifecycleRoleController
现在提供获取角色中端点状态的方法。
有关详细信息,请参阅端点角色。
默认情况下,POJO 方法现在使用InvocableHandlerMethod
,但您可以像以前一样将它们配置为使用 SpEL。
有关更多信息,请参阅 POJO 方法调用。
当将 POJO 方法作为消息处理程序时,您现在可以使用@Default
注释,为不匹配的条件提供回退机制。
有关详细信息,请参阅配置服务激活器。
我们添加了一个简单的PassThroughTransactionSynchronizationFactory
始终将轮询的消息存储在当前事务上下文中。
该消息用作failedMessage
属性的MessagingException
,它包装了在事务完成期间抛出的任何原始异常。
有关详细信息,请参阅事务同步。
基于表达式的聚合器ReleaseStrategy
现在根据MessageGroup
而不仅仅是Message<?>
.
有关更多信息,请参阅聚合器和 Spring 表达式语言 (SpEL)。
您现在可以提供ObjectToMapTransformer
与定制的JsonObjectMapper
.
有关更多信息,请参阅聚合器和 Spring 表达式语言 (SpEL)。
这@GlobalChannelInterceptor
annotation 和<int:channel-interceptor>
现在支持负模式(通过!
prepending)以匹配组件名称。
有关更多信息,请参阅全局通道拦截器配置。
当候选者未能获取锁时,LockRegistryLeaderInitiator
现在会发出新的OnFailedToAcquireMutexEvent
通过DefaultLeaderEventPublisher
.
看Leadership Event Handling
了解更多信息。
网关更改
当网关方法具有void
返回类型并提供错误通道,网关现在可以正确地将errorChannel
页眉。
以前,未填充标头。
这导致同步下游流(在调用线程上运行)将异常发送到配置的通道,但异步下游流上的异常将发送到默认的errorChannel
相反。
这RequestReplyExchanger
界面现在有一个throws MessagingException
子句来满足拟议的消息交换合同。
现在,您可以使用 SpEL 表达式指定请求和回复超时。 有关详细信息,请参阅消息传递网关。
聚合器性能更改
默认情况下,聚合器现在使用SimpleSequenceSizeReleaseStrategy
,效率更高,尤其是对于大型团体。
现在,空组计划在以下之后删除empty-group-min-timeout
.
有关详细信息,请参阅聚合器。
分路器更改
拆分器组件现在可以处理和拆分 JavaStream
和反应流Publisher
对象。
如果输出通道是ReactiveStreamsSubscribableChannel
这AbstractMessageSplitter
构建一个Flux
用于后续迭代,而不是常规Iterator
,与被拆分的对象无关。
另外AbstractMessageSplitter
提供protected obtainSizeIfPossible()
允许确定大小的方法Iterable
和Iterator
对象,如果可能的话。
有关更多信息,请参阅拆分器。
JMS 更改
以前,Spring Integration JMS XML 配置使用默认的 bean 名称connectionFactory
对于 JMS 连接工厂,允许从组件定义中省略该属性。
我们将其重命名为jmsConnectionFactory
,这是 Spring Boot 用来自动配置 JMS 连接工厂 bean 的 bean 名称。
如果您的应用程序依赖于以前的行为,您可以将connectionFactory
bean 到jmsConnectionFactory
或者专门配置组件以使用其当前名称来使用 Bean。
有关更多信息,请参阅 JMS 支持。
邮件更改
呈现 IMAP 邮件内容的一些不一致问题已得到解决。 有关更多信息,请参阅“邮件接收通道适配器”部分中的注释。
提要更改
而不是com.rometools.fetcher.FeedFetcher
,这在 ROME 中已被弃用,我们引入了一个新的Resource
属性的FeedEntryMessageSource
.
有关详细信息,请参阅 Feed Adapter。
文件更改
我们推出了新的FileHeaders.RELATIVE_PATH
消息头表示FileReadingMessageSource
.
尾部适配器现在支持idleEventInterval
在该时间段内文件中没有数据时发出事件。
flush 谓词FileWritingMessageHandler
现在有一个额外的参数。
文件出站通道适配器和网关 (FileWritingMessageHandler
) 现在支持REPLACE_IF_MODIFIED
FileExistsMode
.
它们现在还支持对新写入的文件设置文件权限。
一个新的FileSystemMarkerFilePresentFileListFilter
现已推出。
有关详细信息,请参阅处理不完整的数据。
这FileSplitter
现在提供一个firstLineAsHeader
选项,将第一行内容作为其余行发出的邮件的标头。
有关更多信息,请参阅文件支持。
FTP 和 SFTP 更改
入站通道适配器现在具有名为max-fetch-size
,用于限制在本地目录中当前没有文件时轮询期间获取的文件数。
默认情况下,它们还配置了FileSystemPersistentAcceptOnceFileListFilter
在local-filter
.
您还可以提供自定义DirectoryScanner
通过设置新引入的scanner
属性。
您现在可以将正则表达式和模式过滤器配置为始终传递目录。 在出站网关中使用递归时,这可能很有用。
默认情况下,所有入站通道适配器(基于流式处理和同步)现在都使用适当的AbstractPersistentAcceptOnceFileListFilter
防止重复下载远程文件的实现。
FTP 和 SFTP 出站网关现在支持REPLACE_IF_MODIFIED
FileExistsMode
获取远程文件时。
FTP 和 SFTP 流式入站通道适配器现在在邮件头中添加远程文件信息。
FTP 和 SFTP 出站通道适配器(以及PUT
命令)现在支持InputStream
如payload
太。
入站通道适配器现在可以使用新引入的RecursiveDirectoryScanner
.
请参阅scanner
FTP Inbound Channel Adapter 部分中的选项。
此外,您现在可以将这些适配器切换到WatchService
相反。
我们添加了NLST
命令设置为AbstractRemoteFileOutboundGateway
执行 list files names 远程命令。
您现在可以提供FtpOutboundGateway
跟workingDirExpression
以更改当前请求消息的 FTP 客户端工作目录。
这RemoteFileTemplate
现在随invoke(OperationsCallback<F, T> action)
执行多个RemoteFileOperations
调用相同的、线程绑定的、Session
.
我们添加了新的过滤器来检测不完整的远程文件。
这FtpOutboundGateway
和SftpOutboundGateway
现在支持在成功传输后使用GET
或MGET
命令。
有关更多信息,请参阅 FTP/FTPS 适配器和 SFTP 适配器。
集成属性
版本 4.3.2 添加了一个新的spring.integration.readOnly.headers
global 属性,用于自定义不应复制到新创建的标头列表Message
通过MessageBuilder
.
有关详细信息,请参阅全局属性。
流更改
我们在CharacterStreamReadingMessageSource
让它用于“管道”标准并在管道关闭时发布应用程序事件。
有关详细信息,请参阅从流读取。
屏障变化
这BarrierMessageHandler
现在支持将延迟到达的触发器消息发送到的丢弃通道。
有关更多信息,请参阅线程屏障。
AMQP 更改
AMQP 出站端点现在支持在使用 RabbitMQ 延迟消息交换插件时设置延迟表达式。
入站端点现在支持 Spring AMQPDirectMessageListenerContainer
.
可轮询的 AMQP 支持通道现在会阻止轮询程序配置的轮询程序线程receiveTimeout
(默认值:一秒)。
标头,例如contentType
,现在在最终消息中使用由消息转换器添加到消息属性的消息。
以前,它取决于转换器类型,以确定最终消息中出现的标头和消息属性。
要覆盖转换器设置的标头,请将headersMappedLast
属性设置为true
.
有关详细信息,请参阅 AMQP 支持。
HTTP 更改
默认情况下,DefaultHttpHeaderMapper.userDefinedHeaderPrefix
属性现在是一个空字符串,而不是X-
.
有关更多信息,请参阅 HTTP 标头映射。
默认情况下,uriVariablesExpression
现在使用SimpleEvaluationContext
(自 5.0.4 起)。
有关详细信息,请参阅映射 URI 变量。
MQTT 变更
入站消息现在与RECEIVED_TOPIC
,RECEIVED_QOS
和RECEIVED_RETAINED
标头,以避免在应用程序中继消息时无意中传播到出站消息。
出站通道适配器现在支持主题、qos 和保留属性的表达式。 默认值保持不变。 有关更多信息,请参阅 MQTT 支持。
STOMP 更改
我们将 STOMP 模块更改为ReactorNettyTcpStompClient
,基于 Project Reactor3.1
和reactor-netty
外延。
我们重命名Reactor2TcpStompSessionManager
自ReactorNettyTcpStompSessionManager
,根据ReactorNettyTcpStompClient
基础。
有关更多信息,请参阅 STOMP 支持。
Web 服务更改
您现在可以提供WebServiceOutboundGateway
具有外部配置的实例WebServiceTemplate
实例。
DefaultSoapHeaderMapper
现在可以映射一个javax.xml.transform.Source
user-defined header 添加到 SOAP 标头元素。
Simple WebService 入站和出站网关现在可以处理完整的WebServiceMessage
作为payload
,允许作 MTOM 附件。
有关更多信息,请参阅 Web 服务支持。
Redis 更改
这RedisStoreWritingMessageHandler
现在提供额外的String
基于 spEL 表达式的 setter(为了方便 Java 配置)。您现在可以配置zsetIncrementExpression
在RedisStoreWritingMessageHandler
也。 此外,此属性已从true
自false
由于INCR
选项ZADD
Redis 命令是可选的。
您现在可以提供RedisInboundChannelAdapter
使用Executor
用于执行 Redis 侦听器调用器。
此外,收到的消息现在包含一个RedisHeaders.MESSAGE_SOURCE
标头来指示消息的来源(主题或模式)。
有关更多信息,请参阅 Redis 支持。
TCP 更改
我们添加了一个新的ThreadAffinityClientConnectionFactory
将 TCP 连接绑定到线程。
您现在可以配置 TCP 连接工厂以支持PushbackInputStream
实例,让反序列化器在“预读”后“未读”(回推)字节。
我们添加了一个ByteArrayElasticRawDeserializer
没有maxMessageSize
根据需要控制和缓冲传入数据。
有关详细信息,请参阅 TCP 和 UDP 支持。
JDBC 更改
这JdbcMessageChannelStore
现在为ChannelMessageStorePreparedStatementSetter
,允许您在商店中自定义消息插入。
这ExpressionEvaluatingSqlParameterSourceFactory
现在为sqlParameterTypes
,允许您自定义参数的 SQL 类型。
有关更多信息,请参阅 JDBC 支持。
指标更改
对千分尺进行了更改Meters 在 5.0.3 版本中,使它们更适合在维度系统中使用。
在 5.0.4 中进行了进一步的更改。
如果您使用 Micrometer,我们建议至少使用 5.0.4 版。 |
@EndpointId
附注
此注解在 5.0.4 版中引入,在使用 Java 配置时提供对 Bean 命名的控制。 有关更多信息,请参阅端点 Bean 名称。