|
此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 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测试类上的注释和MockIntegrationfactory,您可以使集成流的 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)。
这@GlobalChannelInterceptorannotation 和<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 名称。
如果您的应用程序依赖于以前的行为,您可以将connectionFactorybean 到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.
请参阅scannerFTP 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.headersglobal 属性,用于自定义不应复制到新创建的标头列表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.Sourceuser-defined header 添加到 SOAP 标头元素。
Simple WebService 入站和出站网关现在可以处理完整的WebServiceMessage作为payload,允许作 MTOM 附件。
有关更多信息,请参阅 Web 服务支持。
Redis 更改
这RedisStoreWritingMessageHandler现在提供额外的String基于 SpEL 表达式的 setter(为了方便 Java 配置)。
您现在可以配置zsetIncrementExpression在RedisStoreWritingMessageHandler也。
此外,此属性已从true自false由于INCR选项ZADDRedis 命令是可选的。
您现在可以提供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 名称。