更改历史

更改历史记录

5.4 和 5.5 之间的更改

新组件

文件聚合器

引入了 的基于 的 和 作为组件的实现。 有关更多信息,请参阅 File AggregatorFileSplitter.FileMakerCorrelationStrategyReleaseStrategyMessageGroupProcessorFileAggregatorspring-doc.cn

MQTT v5 支持

引入 和 (包括各自的 ) 以支持 MQTT v5 协议通信。 有关更多信息,请参阅 MQTT v5 支持Mqttv5PahoMessageDrivenChannelAdapterMqttv5PahoMessageHandlerMqttHeaderMapperspring-doc.cn

一般更改

所有持久化实现都提供基于目标数据库流式处理 API 的协定。 有关更多信息,请参阅 Message StoreMessageGroupStorestreamMessagesForGroup(Object groupId)spring-doc.cn

bean(如果声明)现在必须是 instead of 的实例,为了向后兼容,该支持已弃用。 添加 global 属性以指示必须使用 option (或不) 配置全局默认值。 添加 global 属性以指示全局默认值必须忽略(或不忽略)调度错误并将消息传递给下一个处理程序。 有关更多信息,请参阅全局属性integrationGlobalPropertiesorg.springframework.integration.context.IntegrationPropertiesjava.util.Propertiesspring.integration.channels.error.requireSubscribers=trueerrorChannelrequireSubscribersspring.integration.channels.error.ignoreFailures=trueerrorChannelspring-doc.cn

(源轮询通道适配器和轮询使用者)视为跳过调用源。 稍后可以将其更改为不同的值,例如通过 Control Bus。 有关更多信息,请参阅轮询使用者AbstractPollingEndpointmaxMessagesPerPoll == 0spring-doc.cn

现在接受 a to any input channel 作为反应式流源,并使用 a below. 这在 Java DSL 中作为一个选项和消息传递注释的嵌套注释中被介绍。 有关更多信息,请参阅 Reactive Streams SupportConsumerEndpointFactoryBeanreactiveCustomizerFunctionReactiveStreamsConsumerConsumerEndpointSpec.reactive()@Reactivespring-doc.cn

对于某些精细调度用例,现在可以将 for a correlation 消息处理程序(和 )评估为 a。 此外,该选项也被添加到 中,以提供针对要添加到组的消息的条件。 有关更多信息,请参阅 AggregatorgroupTimeoutExpressionAggregatorResequencerjava.util.DateBiFunction groupConditionSupplierAbstractCorrelatingMessageHandlerMessageGroupspring-doc.cn

抽象可以附带 a to better for later for the group for the decision。 有关更多信息,请参阅 Message Group ConditionMessageGroupconditionspring-doc.cn

集成流组合

添加了新的工厂方法,以允许从现有流的输出启动电流。 此外,还添加了一个终端运算符,用于在一些其他流的输入通道处继续电流流动。 有关更多信息,请参阅 集成流组合IntegrationFlows.from(IntegrationFlow)IntegrationFlowIntegrationFlowDefinitionto(IntegrationFlow)spring-doc.cn

AMQP 更改

and(以及相应的 Java DSL 构建器)现在支持将 作为 general purpose 的特定于 AMQP 的替代方案。 有关更多信息,请参阅 AMQP 支持AmqpInboundChannelAdapterAmqpInboundGatewayorg.springframework.amqp.rabbit.retry.MessageRecovererRecoveryCallbackspring-doc.cn

Redis 更改

现在,所有选项都有 setter,包括一个函数。 有关更多信息,请参阅 Redis 支持ReactiveRedisStreamMessageProducerStreamReceiver.StreamReceiverOptionsBuilderonErrorResumespring-doc.cn

HTTP 更改

这不再回退到内容类型,而是让 根据提供的请求正文转换做出最终决定。 它现在还有一个标志(默认情况下),可以只返回响应正文,或者将整体作为回复消息有效负载返回,独立于提供的 . 也为 提供了相同的选项。 有关更多信息,请参阅 HTTP 支持HttpRequestExecutingMessageHandlerapplication/x-java-serialized-objectRestTemplateHttpMessageConverterextractResponseBodytrueResponseEntityexpectedResponseTypeWebFluxRequestExecutingMessageHandlerspring-doc.cn

文件/FTP/SFTP 更改

持久性文件列表过滤器现在具有 boolean 属性 。 将此属性设置为 , 还会设置 ,这意味着出站网关( 和 )上的递归操作现在每次都将始终遍历整个目录树。 这是为了解决未检测到目录树深处更改的问题。 此外,还会导致将文件的完整路径用作元数据存储键;这解决了以下问题:如果具有相同名称的文件在不同目录中多次出现,则过滤器无法正常工作。 重要说明:这意味着对于顶级目录下的文件,将无法找到持久性元数据存储中的现有键。 因此,默认情况下,该属性为;这可能会在未来版本中更改。forRecursiontruealwaysAcceptDirectorieslsmgetforRecursion=truefalsespring-doc.cn

现在,这提供了一个方便的选项,而不需要显式引用 .FileInboundChannelAdapterSpecrecursive(boolean)RecursiveDirectoryScannerspring-doc.cn

为方便起见,现在可以在命令中使用 。remoteDirectoryExpressionmvspring-doc.cn

MongoDb 更改

已添加到 MongoDd Java DSL 中。 现在,在 和 implementations上都公开了一个选项。MongoDbMessageSourceSpecupdateMongoDbMessageSourceReactiveMongoDbMessageSourcespring-doc.cn

有关更多信息,请参阅 MongoDb 支持spring-doc.cn

WebSockets 更改

现在可以在运行时注册和删除基于 的 WebSocket 通道适配器。ServerWebSocketContainerspring-doc.cn

有关更多信息,请参阅 WebSockets 支持spring-doc.cn

JPA 更改

现在支持 .JpaOutboundGatewayIterablePersistMode.DELETEspring-doc.cn

有关更多信息,请参阅 Outbound Channel Adapterspring-doc.cn

网关更改

以前,在使用 XML 配置时,对于无参数方法,将忽略该选项。 有一个可能的中断性变更 - 如果方法之前是 Comments 以及 (使用不同的表达式) ,则 the 将被应用,现在 the 被应用。 有关更多信息,请参阅使用注释和 XML 的网关配置调用无参数方法@Gateway.payloadExpression@Payload@Gateway@Payload@Gateway.payloadExpressionspring-doc.cn

5.3 和 5.4 之间的更改

新组件

Apache Kafka 的通道适配器

独立的 Spring Integration for Apache Kafka 项目已作为模块合并到该项目中。spring-integration-kafkaspring-doc.cn

默认值已更改。KafkaProducerMessageHandlersendTimeoutExpressionspring-doc.cn

您现在可以访问 for underlying operations.Future<?>send()spring-doc.cn

有关更多信息,请参阅 Spring for Apache Kafka 支持spring-doc.cn

R2DBC 通道适配器

引入了用于 R2DBC 数据库交互的 Channel Adapters。 有关更多信息,请参阅 R2DBC 支持spring-doc.cn

Redis 流支持

引入了 Channel Adapters for Redis Stream 支持。 有关更多信息,请参阅 Redis Stream Outbound Channel Adapterspring-doc.cn

可更新锁注册表

引入了 Renewable lock registry,以允许续订分布式锁的租约。 有关更多信息,请参阅 JDBC 实现spring-doc.cn

ZeroMQ 支持

ZeroMqChannel,并且已引入。 有关更多信息,请参阅 ZeroMQ 支持ZeroMqMessageHandlerZeroMqMessageProducerspring-doc.cn

一般更改

单向消息传递网关(方法返回类型)现在在标头中显式设置一个,以忽略任何可能的下游回复。 有关更多信息,请参阅设置默认回复通道voidnullChannelreplyChannelspring-doc.cn

此外,网关方法调用程序 () 现在提供托管 Bean 名称,作为网关代理 Bean 名称和方法签名的组合。 例如:。 这会影响为网关方法调用公开的消息历史记录和指标,并在应用程序上下文的启动和关闭期间提供精细的日志。GatewayProxyFactoryBean.MethodInvocationGatewaysampleGateway#echo(String)spring-doc.cn

聚合器(和重新排序器)现在可以使孤立组(持久存储中的组,在应用程序重新启动后没有新消息到达)过期。 有关更多信息,请参阅 Aggregator Expiring Groupsspring-doc.cn

已删除由 Micrometer meter 替换的旧指标。spring-doc.cn

Thread Barrier 现在有两个单独的超时选项:和 .requestTimeouttriggerTimeoutspring-doc.cn

TCP/UDP 更改

连接工厂现在支持多个发送组件 ();它们仍然仅限于一个接收组件 ()。 例如,这允许入站网关和出站通道适配器共享同一个工厂,同时支持请求/回复和从服务器到 Client 端的任意消息传递。 共享工厂不应与出站网关一起使用,除非正在使用一次性连接或 。 有关更多信息,请参阅 Collaborative Channel Adapters and TCP GatewaysTcpSenderTcpListenerThreadAffinityClientConnectionFactoryspring-doc.cn

UDP 通道适配器现在可以配置为 ,允许设置适配器不直接支持的套接字属性。 有关更多信息,请参阅 UDP 适配器SocketCustomizerspring-doc.cn

AMQP 更改

出站终端节点现在具有处理发布者确认和返回的新机制。 有关更多信息,请参阅 Publisher Confirms and Returns 的替代机制spring-doc.cn

new 受 . 有关更多信息,请参阅 入站通道适配器BatchMode.EXTRACT_PAYLOAD_WITH_HEADERSAmqpInboundChannelAdapterspring-doc.cn

邮件更改

现在可以按原样生成,而无需急切地获取其内容。 有关更多信息,请参阅 Mail-receiving Channel AdapterAbstractMailReceiverMimeMessagespring-doc.cn

5.2 和 5.3 之间的更改

新组件

集成模式

引入了抽象来指示 Spring 集成组件属于哪个企业集成模式(an )和类别。 有关此抽象及其用例的更多信息,请参阅其 JavaDocs 和 Integration GraphIntegrationPatternIntegrationPatternTypespring-doc.cn

ReactiveMessageHandler

现在,框架本身支持 。 有关更多信息,请参见 ReactiveMessageHandlerReactiveMessageHandlerspring-doc.cn

ReactiveMessageSourceProducer

这是将提供的 to 包装到 for on demand 调用中的反应式实现。 有关更多信息,请参阅 Reactive Streams SupportReactiveMessageSourceProducerMessageProducerSupportMessageSourceFluxreceive()spring-doc.cn

Java DSL 扩展

引入了一个新的 API,允许使用自定义或组合的 EIP 运算符扩展现有的 Java DSL。 这还可用于为任何现成的扩展引入定制器。 有关更多信息,请参阅 DSL 扩展IntegrationFlowExtensionIntegrationComponentSpecspring-doc.cn

Kotlin DSL

引入了用于集成流配置的 Kotlin DSL。 有关更多信息,请参阅 Kotlin DSL 章节spring-doc.cn

ReactiveRequestHandler建议

提供 A 以自定义来自消息处理程序的回复。 有关更多信息,请参见 Reactive AdviceReactiveRequestHandlerAdviceMonospring-doc.cn

HandleMessageAdviceAdapter

提供 A 来包装 any 以应用于 ,而不是默认行为。 有关更多信息,请参阅 Handling Message AdviceHandleMessageAdviceAdapterMethodInterceptorMessageHandler.handleMessage()AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage()spring-doc.cn

MongoDB 反应式通道适配器

该模块现在为 Spring Data 中的反应式 MongoDb 驱动程序支持提供通道适配器实现。 此外,MongoDb 更改流支持的反应式实现也存在于 . 有关更多信息,请参阅 MongoDB 支持spring-integration-mongodbMongoDbChangeStreamMessageProducerspring-doc.cn

接收消息建议

引入了一个特殊的代理 exactly 或 . 有关更多信息,请参阅智能轮询ReceiveMessageAdviceMessageSource.receive()PollableChannel.receive()spring-doc.cn

一般更改

网关代理现在默认不代理方法。 有关更多信息,请参阅调用默认方法defaultspring-doc.cn

现在,内部组件(如 )在集成图中表示时具有缩短的名称。 有关更多信息,请参阅 Integration Graph_org.springframework.integration.errorLoggerspring-doc.cn

在聚合器中,当 返回 a 时,如果 与组第一条消息中的标头匹配,则对输出消息执行 。 有关更多信息,请参阅 Aggregator Programming ModelMessageGroupProcessorMessageMessageBuilder.popSequenceDetails()sequenceDetailsspring-doc.cn

基于 和 的新运算符已添加到 Java DSL 中。 当我们将子流配置为代理支持的渠道(如 等)的发布-订阅订阅者时,这种 Fluent API 具有其优势。 有关更多信息,请参阅子流支持publishSubscribeChannel()BroadcastCapableChannelBroadcastPublishSubscribeSpecSubscribableJmsChannelSubscribableRedisChannelspring-doc.cn

Spring Integration 中的事务支持现在还包括配置选项 if a 或 implementation 为要发送的有效负载生成反应类型。 有关更多信息,请参阅。 另请参见 Reactive TransactionsReactiveTransactionManagerMessageSourceMessageHandlerTransactionInterceptorBuilderspring-doc.cn

Java DSL 中添加了一个无需创建显式通道即可注册实例的新运算符。 有关更多信息,请参见 Operator intercept()intercept()ChannelInterceptorspring-doc.cn

具有比较新旧值的新机制。 有关详细信息,请参阅 Idempotent Receiver Enterprise Integration PatternMessageStoreSelectorspring-doc.cn

基类现在有一个 API,允许实现消息驱动的生产者端点,这些端点通过 reactive 发出消息。 有关更多信息,请参阅 Reactive Streams SupportMessageProducerSupportsubscribeToPublisher(Publisher<? extends Message<?>>)Publisherspring-doc.cn

AMQP 更改

出站通道适配器具有一个新属性,允许在一次调用的范围内发送多条消息。 有关更多信息,请参阅 AMQP 出站通道适配器multiSendRabbitTemplatespring-doc.cn

入站通道适配器现在支持将属性设置为 . 请参阅 AMQP 入站通道适配器consumerBatchEnabledtruespring-doc.cn

HTTP 更改

上的属性已被弃用,取而代之的是新引入的 。 有关更多信息,请参阅 JavaDocs 和控制 URI 编码。 这也影响了 ,相应的 Java DSL 和 XML 配置。 相同的选项将添加到 .encodeUriAbstractHttpRequestExecutingMessageHandlerencodingModeDefaultUriBuilderFactory.EncodingModeWebFluxRequestExecutingMessageHandlerAbstractWebServiceOutboundGatewayspring-doc.cn

Web 服务更改

为 Web 服务组件添加了 Java DSL 支持。 上的属性已被弃用,取而代之的是新引入的 - 类似于上面的 HTTP 更改。 有关更多信息,请参阅 Web 服务支持encodeUriAbstractWebServiceOutboundGatewayencodingModespring-doc.cn

TCP 更改

默认情况下,在当前连接失败之前,不再进行故障回复。 有关更多信息,请参阅 TCP 故障转移客户端连接工厂FailoverClientConnectionFactoryspring-doc.cn

现在支持异步请求/回复。 有关更多信息,请参阅 TCP 网关TcpOutboundGatewayspring-doc.cn

现在,您可以配置客户端连接以对新连接执行一些任意测试。 有关更多信息,请参阅测试连接spring-doc.cn

RSocket 更改

已向 添加了一个选项,其含义是将传入解码为单个单元或对其中的每个事件应用解码。 有关更多信息,请参阅 RSocket 入站网关decodeFluxAsUnitRSocketInboundGatewayFluxspring-doc.cn

Zookeeper 更改

A (及其 XML )公开了一个选项,用于对配置进行更多控制。 有关更多信息,请参阅 领导层事件处理LeaderInitiatorFactoryBean<int-zk:leader-listener>candidateCandidatespring-doc.cn

MQTT 变更

现在可以将入站通道适配器配置为允许用户控制何时确认消息被传送。 有关更多信息,请参阅手动确认spring-doc.cn

出站适配器现在会在无法创建连接或丢失时发布 。 以前,只有入站适配器执行此操作。 请参阅 MQTT 事件MqttConnectionFailedEventspring-doc.cn

(S)FTP 更改

(例如,用于 FTP 和 SFTP)除了 、 之外,现在还支持 . 有关更多信息,请参阅 SFTP 支持FTP 支持FileTransferringMessageHandlerFilebyte[]StringInputStreamorg.springframework.core.io.Resourcespring-doc.cn

文件更改

该模式不再需要 Jackson 处理器(或类似)依赖项。 它使用 a 表示实例的直接字符串。 有关更多信息,请参阅 FileSplitterFileSplittermarkersJsonSimpleJsonSerializerFileSplitter.FileMarkerspring-doc.cn

5.1 和 5.2 之间的更改

包和类更改

Pausable已从 移动到 。o.s.i.endpointo.s.i.corespring-doc.cn

行为更改

请参阅迁移指南,了解此版本中的行为更改。spring-doc.cn

新组件

RSocket 支持

该模块现在可用于 RSocket 协议支持的通道适配器实现。 有关更多信息,请参阅 RSocket 支持spring-integration-rsocketspring-doc.cn

Rate Limit Advice 支持

现在可用于限制处理程序的请求速率。 有关更多信息,请参阅 Rate Limiter AdviceRateLimiterRequestHandlerAdvicespring-doc.cn

Caching Advice 支持

现在,可用于在处理程序上缓存请求结果。 有关更多信息,请参见 Caching AdviceCacheRequestHandlerAdvicespring-doc.cn

Kotlin 脚本支持

JSR223 脚本模块现在包含对 Kotlin 脚本的支持。 有关更多信息,请参阅脚本支持spring-doc.cn

Flux 聚合器支持

现在,可用于基于 Project Reactor 运算符的分组和窗口化消息逻辑。 有关更多信息,请参阅 Flux AggregatorFluxAggregatorMessageHandlerFluxspring-doc.cn

FTP/SFTP 事件发布者

FTP 和 SFTP 模块现在为某些 Apache Mina FTP/SFTP 服务器事件提供事件侦听器。 有关更多信息,请参阅 Apache Mina FTP 服务器事件Apache Mina SFTP 服务器事件spring-doc.cn

Avro 转换器

现在提供了简单的 Apache Avro 转换器。 有关更多信息,请参阅 Avro Transformersspring-doc.cn

一般更改

现在支持目标对象要反序列化为的泛型。 有关更多信息,请参阅 JSON 转换器JsonToObjectTransformerspring-doc.cn

现在支持配置选项。 有关更多信息,请参阅 SplittersplitterdiscardChannelspring-doc.cn

Control Bus 现在可以处理 (扩展 ) 操作。 请参阅 Control Bus 了解更多信息。PausableLifecyclespring-doc.cn

已为聚合器组件引入了该策略,以合并和计算输出消息的标头。 有关更多信息,请参阅 Aggregator Programming ModelFunction<MessageGroup, Map<String, Object>>spring-doc.cn

框架中抛出的所有 s 现在都包括一个 bean 资源和源,用于在不涉及最终用户代码的情况下回溯配置部分。 有关更多信息,请参阅错误处理MessageHandlingExceptionspring-doc.cn

为了获得更好的最终用户体验,Java DSL 现在提供了一个 configurer 变体,用于使用网关接口启动流。 有关更多信息,请参阅 JavaDocs。 此外,a 现在是 . 和 evaluation 上下文变量现已弃用。 有关更多信息,请参阅 Messaging Gateway。IntegrationFlows.from(Class<?> serviceInterface, Consumer<GatewayProxySpec> endpointConfigurer)MethodArgsHolderGatewayProxyFactoryBean#args#methodspring-doc.cn

AMQP 更改

现在可以将出站终端节点配置为在超时内未收到发布者确认时合成 “nack”。 有关更多信息,请参阅 Outbound Channel Adapterspring-doc.cn

入站通道适配器现在可以接收作为有效负载的批处理消息,而不是接收每个批处理片段的离散消息。 有关更多信息,请参阅 Batched MessagesList<?>spring-doc.cn

现在可以将出站通道适配器配置为阻塞调用线程,直到收到发布者确认(确认)。 有关更多信息,请参阅 Outbound Channel Adapterspring-doc.cn

文件更改

对筛选远程文件进行了一些改进。 有关更多信息,请参阅 Remote Persistent File List Filtersspring-doc.cn

TCP 更改

现在,除了有效负载之外,还可以使用 length 标头的长度。 有关更多信息,请参见Message Demarcation (Serializers and Deserializers)。ByteArrayLengthHeaderSerializerspring-doc.cn

使用 时,现在优先接受新连接而不是从现有连接中读取,但它是可配置的。 有关更多信息,请参阅关于非阻塞 I/O (NIO)。TcpNioServerConnectionFactoryspring-doc.cn

出站网关具有新属性 ;当与每个请求/回复的新连接一起使用时,它会向服务器发出 EOF 信号,而不会关闭连接。 这对于使用 EOF 来表示消息结束而不是数据中的某个分隔符的服务器非常有用。 有关更多信息,请参阅 TCP 网关closeStreamAfterSendspring-doc.cn

客户端连接工厂现在支持如果在该时间内未建立连接,则会导致引发异常。 有关更多信息,请参阅 TCP 连接工厂connectTimeoutspring-doc.cn

SoftEndOfStreamException现在是 a 而不是扩展 。RuntimeExceptionIOExceptionspring-doc.cn

邮件更改

现在有一个选项(默认情况下),用于在获取后禁用自动关闭文件夹,但改为填充标头以进行下游交互。 有关更多信息,请参阅 Mail-receiving Channel AdapterAbstractMailReceiverautoCloseFoldertrueIntegrationMessageHeaderAccessor.CLOSEABLE_RESOURCEspring-doc.cn

HTTP 更改

HTTP 入站终端节点现在支持请求负载验证。 有关更多信息,请参阅 HTTP 支持spring-doc.cn

WebFlux 更改

现在支持 , 和 作为请求消息 。 现在支持请求有效负载验证。 有关更多信息,请参阅 WebFlux 支持WebFluxRequestExecutingMessageHandlerPublisherResourceMultiValueMappayloadWebFluxInboundEndpointspring-doc.cn

MongoDb 更改

现在可以使用自定义转换器进行配置。 有关更多信息,请参阅 MongoDB 支持MongoDbMessageStorespring-doc.cn

路由器更改

现在,您可以禁用回退到通道键作为通道 bean 名称的功能。 有关详细信息,请参阅 动态路由器spring-doc.cn

FTP/SFTP 更改

现在,它与 及其 解耦。RotatingServerAdviceRotationPolicyStandardRotationPolicyspring-doc.cn

远程文件信息,包括 host/port 和 directory 现在包含在 和 implementations. 此外,此信息包含在 implementation的 read operations 结果的 headers 中。 FTP 出站终端节点现在支持更改对上传文件的权限。 (SFTP 从 4.3 版开始就已经支持它)。 有关更多信息,请参阅 FTP(S) 支持SFTP 支持AbstractInboundFileSynchronizingMessageSourceAbstractRemoteFileStreamingMessageSourceAbstractRemoteFileOutboundGatewaychmodspring-doc.cn

5.0 和 5.1 之间的更改

新组件

以下是 5.1 中的新增功能组件:spring-doc.cn

AmqpDedicatedChannelAdvice
改进的函数支持

现在,这些接口在 Framework 组件中具有改进的集成支持。 此外,Kotlin lambda 现在可用于处理程序和源方法。java.util.functionspring-doc.cn

@LongRunningTest

提供了 JUnit 5 条件注释,用于检查值为 of 的条目的环境或系统属性,以确定是应该运行还是跳过 test。@LongRunningTestRUN_LONG_INTEGRATION_TESTStruespring-doc.cn

一般更改

版本 5.1 中进行了以下更改:spring-doc.cn

Java DSL

现在是接口,并且是 的内部接口。IntegrationFlowContextIntegrationFlowRegistrationIntegrationFlowContextspring-doc.cn

为方便起见,当您希望在请求-回复配置的流结束时记录时,引入了一个新运算符。 这避免了与 被视为单向端流分量的混淆。logAndReply()log()spring-doc.cn

现在,为集成流中的任何内容生成的 bean 名称都基于组件类型,以便可视化工具、日志分析器和指标收集器具有更好的可读性。NamedComponentspring-doc.cn

现在,第二个参数的 type 除外。GenericHandler.handle()MessageHeadersspring-doc.cn

Dispatcher 异常

捕获和重新引发的异常现在更加一致:AbstractDispatcherspring-doc.cn

  • 具有属性的任何类型的 A 都会原封不动地重新引发。MessagingExceptionfailedMessagespring-doc.cn

  • 所有其他异常都包装在 a 中,并设置了 property 。MessageDeliveryExceptionfailedMessagespring-doc.cn

以前:spring-doc.cn

  • 具有属性的任何类型的 A 都会原封不动地重新引发MessagingExceptionfailedMessagespring-doc.cn

  • 没有属性的 A 包装在设置了该属性的 a 中。MessagingExceptionfailedMessageMessagingExceptionfailedMessagespring-doc.cn

  • 其他实例被原封不动地重新抛出。RuntimeExceptionspring-doc.cn

  • 已检查的异常包装在 a 中,并设置了 属性。MessageDeliveryExceptionfailedMessagespring-doc.cn

全局通道拦截器

全局通道拦截器现在应用于动态注册的通道,例如通过使用 Java DSL 或使用初始化的 bean 时。 以前,在刷新应用程序上下文后创建 bean 时,不会应用拦截器。IntegrationFlowContextbeanFactory.initializeBean()spring-doc.cn

通道拦截器

ChannelInterceptor.postReceive()未收到消息时不再调用;不再需要检查 . 以前,该方法被调用。 如果你有一个依赖于先前行为的拦截器,请改为实现,因为无论是否收到消息,都会调用该方法。 此外,和 以前未使用 ;他们现在这样做了。nullMessage<?>afterReceiveCompleted()PolledAmqpChannelPolledJmsChannelafterReceiveCompleted()nullspring-doc.cn

ObjectToJsonTransformer

为 引入了一种新模式。ResultType.BYTESObjectToJsonTransformerspring-doc.cn

有关更多信息,请参阅 JSON 转换器spring-doc.cn

集成流:生成的 Bean 名称

从版本 5.0.5 开始,为 中的组件生成的 bean 名称包括 flow bean 名称,后跟一个点作为前缀。 例如,如果流 Bean 被命名为 ,则生成的 Bean 可能被命名为 。IntegrationFlowflowBeanflowBean.generatedBeanspring-doc.cn

有关更多信息,请参阅Working With Message Flowsspring-doc.cn

Aggregator 更改

如果 the 的计算结果为负值,则聚合商现在会立即使该组过期。 Only 被视为对当前消息不执行任何操作的信号。groupTimeoutnullspring-doc.cn

引入了一个新属性,以允许(默认情况下)为输出消息调用 a。 此外,现在返回 an 而不是整体进行优化。popSequenceMessageBuilder.popSequenceDetails()AbstractAggregatingMessageGroupProcessorAbstractIntegrationMessageBuilderMessagespring-doc.cn

有关更多信息,请参阅 Aggregatorspring-doc.cn

@Publisher 注释更改

从版本 5.1 开始,您必须通过使用 or using the child element on 显式打开 AOP 功能。 此外,还添加了 and 属性以调整配置。@Publisher@EnablePublisher<int:enable-publisher><int:annotation-config>proxy-target-classorderProxyFactoryspring-doc.cn

文件更改

如果您正在使用或可以提供 a 将在创建新文件时调用。 该回调接收新创建的文件和触发回调的消息。 例如,这可用于编写 CSV 标头。FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSHnewFileCallbackspring-doc.cn

now 在调用之前不会检查并创建目录。 因此,如果 has 的 Inbound Channel Adapter 在应用程序启动期间文件系统不会出现故障。FileReadingMessageSourcestart()FileReadingMessageSourceautoStartup = falsespring-doc.cn

有关更多信息,请参阅文件支持spring-doc.cn

AMQP 更改

我们在 . 有关更多信息,请参阅 AMQP Message Headers 底部附近的注释。IDTimestampDefaultAmqpHeaderMapperspring-doc.cn

现在,该标题已正确映射为常规标题映射中的一个条目。 有关更多信息,请参阅 contentType HeadercontentTypespring-doc.cn

从版本 5.1.3 开始,如果在使用手动确认时发生消息转换异常,并且定义了错误通道,则有效负载为具有附加 和 属性的 a。 这使得错误流能够确认/nack 原始消息。 有关更多信息,请参阅 入站消息转换ManualAckListenerExecutionFailedExceptionchanneldeliveryTagspring-doc.cn

JDBC 更改

JDBC Inbound Channel Adapter 和 JDBC Outbound Gateway 上令人困惑的属性已被弃用,取而代之的是新引入的属性。max-rows-per-pollmax-rowsspring-doc.cn

现在,当请求消息的有效负载是某种类型的实例时,它支持一项功能。JdbcMessageHandlerbatchUpdateIterablespring-doc.cn

表 (的 ) 的索引已得到优化。 如果您在此类存储中有大型消息组,则可能需要更改索引。INT_CHANNEL_MESSAGEJdbcChannelMessageStorespring-doc.cn

有关更多信息,请参阅 JDBC 支持spring-doc.cn

FTP 和 SFTP 更改

现在,A 可用于使用入站通道适配器轮询多个服务器和目录。 有关更多信息,请参见入站通道适配器:轮询多个服务器和目录入站通道适配器:轮询多个服务器和目录RotatingServerAdvicespring-doc.cn

此外,入站适配器实例可以包含变量,该变量包含正在轮询的远程目录。 比较器的泛型类型(用于对流适配器的获取文件列表进行排序)已从 更改为 。 有关更多信息,请参阅 FTP 流入站通道适配器SFTP 流入站通道适配器localFilenameExpression#remoteDirectoryComparator<AbstractFileInfo<F>>Comparator<F>spring-doc.cn

此外,现在可以为入站通道适配器的同步器提供 . 这在 用于限制检索的文件时非常有用。ComparatormaxFetchSizespring-doc.cn

这有一个新属性,当 true 时,会导致工厂在从缓存中检出现有 session 时对 执行操作。CachingSessionFactorytestSessiontest()Sessionspring-doc.cn

有关更多信息,请参阅 SFTP 会话缓存和 FTP 会话缓存spring-doc.cn

出站网关 MPUT 命令现在支持包含文件或字符串集合的消息负载。 有关更多信息,请参阅 SFTP 出站网关FTP 出站网关spring-doc.cn

TCP 支持

使用 SSL 时,现在默认启用主机验证,以防止使用受信任证书进行中间人攻击。 有关更多信息,请参阅主机验证spring-doc.cn

此外,现在可以在 .DefaultTcpSSLContextSupportspring-doc.cn

Twitter 支持

由于 Spring Social 项目已进入生命周期结束状态,因此 Spring Integration 中的 Twitter 支持已移至 Extensions 项目。 有关更多信息,请参见 Spring Integration Social Twitterspring-doc.cn

JMS 支持

现在提供 和 选项来确定 JMS 消息在运行时发送的相应 QoS 选项。 现在允许通过设置将入站和属性映射到相应的 and 选项。 当 或 停止时,关联的侦听器容器现在将关闭;这将关闭其共享连接和任何使用者。 您可以将终端节点配置为恢复到之前的行为。JmsSendingMessageHandlerdeliveryModeExpressiontimeToLiveExpressionDefaultJmsHeaderMapperJMSDeliveryModeJMSExpirationtruesetMapInboundDeliveryMode()setMapInboundExpiration()JmsMessageDrivenEndpointJmsInboundGatewayspring-doc.cn

有关更多信息,请参阅 JMS 支持spring-doc.cn

HTTP/WebFlux 支持

现在,(和 ) 作为评估上下文的根对象提供,因此请求标头、方法、URI 和正文可用于目标状态代码计算。statusCodeExpressionFunctionRequestEntity<?>spring-doc.cn

有关更多信息,请参阅 HTTP 支持WebFlux 支持spring-doc.cn

JMX 更改

现在,如果对象名称键值包含除 Java 标识符(或 period )中允许的字符以外的任何字符,则会引用这些值。 例如。 这有一个副作用,以前“允许”的名称(带有此类字符)现在将被引用。 例如。.org.springframework.integration:type=MessageChannel,name="input:foo.myGroup.errors"org.springframework.integration:type=MessageChannel,name="input#foo.myGroup.errors"spring-doc.cn

千分尺支持更改

现在,自定义框架创建的标准 Micrometer meter 变得更加简单。 有关更多信息,请参阅 Micrometer 集成spring-doc.cn

集成图定制

现在可以通过 . 有关更多信息,请参阅 Integration GraphIntegrationNodeFunction<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationGraphServerspring-doc.cn

集成全局属性

当为类别打开逻辑电平时,现在可以在日志中打印 Integration 全局属性(包括默认值)。 有关更多信息,请参阅全局属性DEBUGorg.springframework.integrationspring-doc.cn

的 forreceiveTimeout@Poller

为了方便起见,注释现在提供了一个选项。 有关更多信息,请参阅使用 @Poller 注释@PollerreceiveTimeoutspring-doc.cn

4.3 和 5.0 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 5.0 添加了许多新组件。spring-doc.cn

Java DSL

单独的 Spring Integration Java DSL 项目现在已经合并到核心 Spring Integration 项目中。 通道适配器和网关的实现被分发到它们的特定模块中。 有关 Java DSL 支持的更多信息,请参阅 Java DSL。 另请参阅 4.3 到 5.0 迁移指南,了解迁移到 Spring Integration 5.0 所需的步骤。IntegrationComponentSpecspring-doc.cn

测试支持

我们创建了一个新的 Spring 集成测试框架来帮助测试 Spring 集成应用程序。 现在,通过测试类和工厂上的注释,您可以使集成流的 JUnit 测试变得更加容易。@SpringIntegrationTestMockIntegrationspring-doc.cn

有关更多信息,请参阅测试支持spring-doc.cn

MongoDB 出站网关

新版允许您通过向数据库的请求通道发送消息来按需对数据库进行查询。MongoDbOutboundGatewayspring-doc.cn

有关更多信息,请参阅 MongoDB 出站网关spring-doc.cn

WebFlux 网关和通道适配器

我们为 Spring WebFlux 框架网关和通道适配器引入了新的 WebFlux 支持模块。spring-doc.cn

有关更多信息,请参阅 WebFlux 支持spring-doc.cn

内容类型转换

现在,我们已经使用新的基于 的基础设施进行服务方法调用,我们可以执行从有效负载到目标方法参数的转换。InvocableHandlerMethodcontentTypespring-doc.cn

有关更多信息,请参阅 内容类型转换spring-doc.cn

ErrorMessagePublisherErrorMessageStrategy

我们添加了用于创建实例。ErrorMessagePublisherErrorMessageStrategyErrorMessagespring-doc.cn

有关更多信息,请参阅错误处理spring-doc.cn

JDBC 元数据存储

我们添加了该实现的 JDBC 实现。 当您需要确保元数据的事务边界时,这非常有用。MetadataStorespring-doc.cn

有关更多信息,请参阅 JDBC 元数据存储spring-doc.cn

一般更改

Spring 集成现在完全基于 Spring Framework 和 Project Reactor 。 以前的 Project Reactor 版本不再受支持。5.03.1spring-doc.cn

核心变更

注释现在具有用于更轻松地配置底层 . 有关更多信息,请参阅 Annotation Support@PollererrorChannelMessagePublishingErrorHandlerspring-doc.cn

所有请求-回复端点(基于 )现在都可以启动事务,因此,使整个下游流具有事务性。 有关更多信息,请参阅 Transaction SupportAbstractReplyProducingMessageHandlerspring-doc.cn

现在提供了获取角色中终端节点状态的方法。 有关更多信息,请参阅终端节点角色SmartLifecycleRoleControllerspring-doc.cn

默认情况下,POJO 方法现在通过使用 ,但你可以像以前一样将它们配置为使用 SPEL。 有关更多信息,请参阅 POJO 方法调用InvocableHandlerMethodspring-doc.cn

当将 POJO 方法作为消息处理程序时,您现在可以使用注释标记其中一个服务方法,以便为不匹配的条件提供回退机制。 有关更多信息,请参阅配置 Service Activator@Defaultspring-doc.cn

我们添加了一个简单的 to always store a polled message in the current transaction context. 该消息用作 的属性,该属性包装事务完成期间引发的任何原始异常。 有关更多信息,请参阅 事务同步PassThroughTransactionSynchronizationFactoryfailedMessageMessagingExceptionspring-doc.cn

现在,基于聚合器表达式的聚合器根据 而不是仅 的集合来计算表达式。 有关更多信息,请参见聚合器和 Spring 表达式语言 (SpEL)。ReleaseStrategyMessageGroupMessage<?>spring-doc.cn

现在,您可以为 提供自定义的 .ObjectToMapTransformerJsonObjectMapperspring-doc.cn

注解 和 现在支持组件名称匹配的负模式(通过预置)。 有关更多信息,请参见 Global Channel Interceptor Configuration@GlobalChannelInterceptor<int:channel-interceptor>!spring-doc.cn

当候选者无法获取锁时,现在会发出一个新的 through 。 有关更多信息,请参阅。LockRegistryLeaderInitiatorOnFailedToAcquireMutexEventDefaultLeaderEventPublisherLeadership Event Handlingspring-doc.cn

网关更改

当网关方法具有 return 类型并提供错误通道时,网关现在可以正确设置 header。 以前,标题未填充。 这会导致同步下游流(在调用线程上运行)将异常发送到配置的通道,但异步下游流上的异常将改为发送到默认通道。voiderrorChannelerrorChannelspring-doc.cn

该接口现在有一个子句来满足提议的消息交换协定。RequestReplyExchangerthrows MessagingExceptionspring-doc.cn

现在,您可以使用 SPEL 表达式指定请求和回复超时。 有关更多信息,请参阅 Messaging Gateway。spring-doc.cn

聚合器性能更改

默认情况下,聚合商现在使用 ,这效率更高,尤其是对于大型组。 现在,空组计划在 之后删除。 有关更多信息,请参阅 AggregatorSimpleSequenceSizeReleaseStrategyempty-group-min-timeoutspring-doc.cn

Splitter 更改

splitter 组件现在可以处理和拆分 Java 和 Reactive Streams 对象。 如果输出通道是 ,则为后续迭代构建 ,而不是 常规 ,独立于要拆分的对象。 此外,如果可能,还提供了允许确定 and 对象大小的方法。 有关更多信息,请参阅 SplitterStreamPublisherReactiveStreamsSubscribableChannelAbstractMessageSplitterFluxIteratorAbstractMessageSplitterprotected obtainSizeIfPossible()IterableIteratorspring-doc.cn

JMS 更改

以前, Spring 集成 JMS XML 配置使用 JMS 连接工厂的默认 bean 名称 ,从而允许在组件定义中省略该属性。 我们将其重命名为 ,这是 Spring Boot 用于自动配置 JMS 连接工厂 bean 的 bean 名称。connectionFactoryjmsConnectionFactoryspring-doc.cn

如果您的应用程序依赖于以前的行为,则可以将 Bean 重命名为使用当前名称,或者专门将组件配置为使用 Bean。 有关更多信息,请参阅 JMS 支持connectionFactoryjmsConnectionFactoryspring-doc.cn

邮件更改

呈现 IMAP 邮件内容时的一些不一致问题已得到解决。 有关更多信息,请参阅“邮件接收通道适配器”部分中的注释spring-doc.cn

Feed 更改

我们没有使用 ROME 中弃用的 ,而是为 . 有关更多信息,请参阅 Feed Adaptercom.rometools.fetcher.FeedFetcherResourceFeedEntryMessageSourcespring-doc.cn

文件更改

我们引入了新的消息报头来表示 中的相对路径。FileHeaders.RELATIVE_PATHFileReadingMessageSourcespring-doc.cn

尾部适配器现在支持在该时间段内文件中没有数据时发出事件。idleEventIntervalspring-doc.cn

现在的 flush 谓词具有一个附加参数。FileWritingMessageHandlerspring-doc.cn

文件出站通道适配器和网关 () 现在支持 .FileWritingMessageHandlerREPLACE_IF_MODIFIEDFileExistsModespring-doc.cn

它们现在还支持对新写入的文件设置文件权限。spring-doc.cn

现在有新的可用。 有关更多信息,请参阅处理不完整的数据FileSystemMarkerFilePresentFileListFilterspring-doc.cn

现在提供了一个选项,用于将第一行内容作为标头包含在为其余行发出的消息中。FileSplitterfirstLineAsHeaderspring-doc.cn

有关更多信息,请参阅文件支持spring-doc.cn

FTP 和 SFTP 更改

入站通道适配器现在具有一个名为 的属性,该属性用于限制在本地目录中当前没有文件时轮询期间获取的文件数。 默认情况下,它们还在 .max-fetch-sizeFileSystemPersistentAcceptOnceFileListFilterlocal-filterspring-doc.cn

您还可以通过设置新引入的属性来为入站通道适配器提供自定义实现。DirectoryScannerscannerspring-doc.cn

您现在可以将 regex 和 pattern 过滤器配置为始终传递目录。 当您在出站网关中使用递归时,这可能很有用。spring-doc.cn

默认情况下,所有入站通道适配器(基于流和同步)现在都使用适当的实现来防止重复下载远程文件。AbstractPersistentAcceptOnceFileListFilterspring-doc.cn

FTP 和 SFTP 出站网关现在支持在获取远程文件时。REPLACE_IF_MODIFIEDFileExistsModespring-doc.cn

FTP 和 SFTP 流入站通道适配器现在在消息头中添加远程文件信息。spring-doc.cn

FTP 和 SFTP 出站通道适配器(以及用于出站网关的命令)现在也支持 as。PUTInputStreampayloadspring-doc.cn

入站通道适配器现在可以使用新引入的 . 请参阅 FTP 入站通道适配器部分中的选项以进行注入。 此外,您现在可以将这些适配器切换到 。RecursiveDirectoryScannerscannerWatchServicespring-doc.cn

我们添加了 The command to perform the list files names remote 命令。NLSTAbstractRemoteFileOutboundGatewayspring-doc.cn

现在,您可以提供 with 来更改当前请求消息的 FTP 客户端工作目录。FtpOutboundGatewayworkingDirExpressionspring-doc.cn

现在提供了 ,用于在同一个线程绑定的 .RemoteFileTemplateinvoke(OperationsCallback<F, T> action)RemoteFileOperationsSessionspring-doc.cn

我们添加了用于检测不完整远程文件的新过滤器。spring-doc.cn

和 现在支持在成功传输后使用 or 命令删除远程文件的选项。FtpOutboundGatewaySftpOutboundGatewayGETMGETspring-doc.cn

有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器spring-doc.cn

集成属性

版本 4.3.2 添加了一个新的全局属性,允许您自定义不应复制到新创建的 . 有关更多信息,请参阅全局属性spring.integration.readOnly.headersMessageMessageBuilderspring-doc.cn

流更改

我们在 上添加了一个新选项,让它用于 “管道” stdin 并在管道关闭时发布应用程序事件。 有关更多信息,请参阅从 Streams 中读取CharacterStreamReadingMessageSourcespring-doc.cn

屏障变化

现在支持 discard 通道,延迟到达的触发器消息将发送到该通道。 有关更多信息,请参见 Thread BarrierBarrierMessageHandlerspring-doc.cn

AMQP 更改

AMQP 出站终端节点现在支持在使用 RabbitMQ 延迟消息交换插件时设置延迟表达式。spring-doc.cn

入站端点现在支持 Spring AMQP 。DirectMessageListenerContainerspring-doc.cn

可轮询的 AMQP 支持的通道现在阻止 Poller 配置的 Poller 线程(默认值:1 秒)。receiveTimeoutspring-doc.cn

消息转换器添加到消息属性的 Headers(如 )现在用于最终消息。 以前,它取决于转换器类型,即哪些 Headers 和 Message 属性出现在最终消息中。 要覆盖转换器设置的标头,请将属性设置为 。 有关更多信息,请参阅 AMQP 支持contentTypeheadersMappedLasttruespring-doc.cn

HTTP 更改

默认情况下,该属性现在是空字符串,而不是 . 有关更多信息,请参阅 HTTP 标头映射DefaultHttpHeaderMapper.userDefinedHeaderPrefixX-spring-doc.cn

默认情况下,现在使用 a(自 5.0.4 起)。uriVariablesExpressionSimpleEvaluationContextspring-doc.cn

有关更多信息,请参阅映射 URI 变量spring-doc.cn

MQTT 变更

入站消息现在使用 、 和 标头进行映射,以避免在应用程序中继消息时无意中传播到出站消息。RECEIVED_TOPICRECEIVED_QOSRECEIVED_RETAINEDspring-doc.cn

出站通道适配器现在支持 topic、qos 和 retained 属性的表达式。 默认值保持不变。 有关更多信息,请参阅 MQTT 支持spring-doc.cn

STOMP 更改

我们根据 Project Reactor 和扩展将 STOMP 模块更改为使用 。 根据基金会的说法,我们重命名为 。 有关更多信息,请参阅 STOMP 支持ReactorNettyTcpStompClient3.1reactor-nettyReactor2TcpStompSessionManagerReactorNettyTcpStompSessionManagerReactorNettyTcpStompClientspring-doc.cn

Web 服务更改

现在,您可以为实例提供外部配置的实例。WebServiceOutboundGatewayWebServiceTemplatespring-doc.cn

DefaultSoapHeaderMapper现在可以将用户定义的标头映射到 SOAP 标头元素。javax.xml.transform.Sourcespring-doc.cn

Simple WebService 入站和出站网关现在可以将 complete 作为 ,允许操作 MTOM 附件。WebServiceMessagepayloadspring-doc.cn

有关更多信息,请参阅 Web 服务支持spring-doc.cn

Redis 更改

现在为 SPEL 表达式提供了额外的基于 setter 的 setter(为了方便 Java 配置)。 现在,您也可以配置 。 此外,由于 Redis 命令上的选项是可选的,因此此属性已从 更改为 。RedisStoreWritingMessageHandlerStringzsetIncrementExpressionRedisStoreWritingMessageHandlertruefalseINCRZADDspring-doc.cn

现在,您可以为 提供用于执行 Redis 侦听器调用程序的 。 此外,收到的消息现在包含一个标头,用于指示消息的来源(主题或模式)。RedisInboundChannelAdapterExecutorRedisHeaders.MESSAGE_SOURCEspring-doc.cn

有关更多信息,请参阅 Redis 支持spring-doc.cn

TCP 更改

我们添加了一个新的 to bind TCP connections to threads。ThreadAffinityClientConnectionFactoryspring-doc.cn

您现在可以配置 TCP 连接工厂以支持实例,让反序列化器在“提前读取”之后“未读”(推回)字节。PushbackInputStreamspring-doc.cn

我们添加了一个 without 来根据需要控制和缓冲传入数据。ByteArrayElasticRawDeserializermaxMessageSizespring-doc.cn

有关更多信息,请参阅 TCP 和 UDP 支持spring-doc.cn

JDBC 更改

现在为 提供了一个 setter,允许您在存储区中自定义消息插入。JdbcMessageChannelStoreChannelMessageStorePreparedStatementSetterspring-doc.cn

现在,它提供了一个 setter,允许您自定义参数的 SQL 类型。ExpressionEvaluatingSqlParameterSourceFactorysqlParameterTypesspring-doc.cn

有关更多信息,请参阅 JDBC 支持spring-doc.cn

指标更改

现在支持千分尺应用程序监控(自版本 5.0.2 起)。 有关更多信息,请参阅 Micrometer 集成spring-doc.cn

在 5.0.3 版本中对 Micrometer 进行了更改,使其更适合在尺寸系统中使用。 在 5.0.4 中进行了进一步的更改。 如果您使用 Micrometer,我们建议至少使用 5.0.4 版本。Meters
@EndpointId附注

在版本 5.0.4 中引入,此注释提供了在使用 Java 配置时对 Bean 命名的控制。 有关更多信息,请参见端点 Bean 名称spring-doc.cn

4.2 和 4.3 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 Wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 4.3 添加了许多新组件。spring-doc.cn

AMQP 异步出站网关
MessageGroupFactory

我们引入了允许控制 logic 中的实例的策略。 我们为 添加了 的 实现,其中 为 默认 factory 进行标准实现。 有关更多信息,请参阅 Message StoreMessageGroupFactoryMessageGroupMessageGroupStoreSimpleMessageGroupFactorySimpleMessageGroupGroupType.HASH_SETMessageGroupStorespring-doc.cn

PersistentMessageGroup

我们为持久化实例添加了 (lazy-load proxy) 实现, 它返回此实例 when there is (default)。 有关更多信息,请参阅 Message StorePersistentMessageGroupMessageGroupStoregetMessageGroup()lazyLoadMessageGroupstruespring-doc.cn

FTP 和 SFTP 流入站通道适配器

我们添加了入站通道适配器,这些适配器返回一个 for each file,允许您检索远程文件,而无需将它们写入本地文件系统。 有关更多信息,请参阅 FTP 流入站通道适配器SFTP 流入站通道适配器InputStreamspring-doc.cn

StreamTransformer

我们添加了将有效负载转换为 a 或 a 的功能。 有关更多信息,请参阅 Stream TransformerStreamTransformerInputStreambyte[]Stringspring-doc.cn

集成图

我们添加了 和 REST 服务,以将 Spring 集成应用程序的运行时模型公开为图形。 有关更多信息,请参阅 Integration GraphIntegrationGraphServerIntegrationGraphControllerspring-doc.cn

JDBC Lock Registry

我们添加了通过数据库表共享的分布式锁。 有关更多信息,请参阅 JDBC Lock RegistryJdbcLockRegistryspring-doc.cn

LeaderInitiatorLockRegistry

我们添加了基于策略的 implementation 。 有关更多信息,请参阅 领导事件处理LeaderInitiatorLockRegistryspring-doc.cn

一般更改

本节描述了版本 4.3 为 Spring 集成带来的一般更改。spring-doc.cn

核心变更

本节描述了对 Spring 集成核心的一般更改。spring-doc.cn

链中的出站网关

以前,您可以在链中的出站网关上指定 a。 它完全被忽视了。 gateway 的回复将转到下一个 chain element,或者,如果 gateway 是最后一个 element,则返回到 chain 的 output channel。 现在,系统会检测并禁止此情况。 如果您有此类配置,请删除 .reply-channelreply-channelspring-doc.cn

异步服务激活器

我们添加了一个选项,使服务激活器同步。 有关更多信息,请参阅 Asynchronous Service Activatorspring-doc.cn

消息注释支持更改

消息传递注释支持不需要类级别的(或任何其他)注释声明。 要恢复以前的行为,请将 of 设置为 . 有关更多信息,请参阅全局属性注释支持@MessageEndpoint@Componentspring.integration.messagingAnnotations.require.componentAnnotationspring.integration.propertiestruespring-doc.cn

邮件更改

本节描述了对 Spring 集成邮件功能的一般更改。spring-doc.cn

可自定义的用户标志

可自定义的(在 4.2.2 中添加,以提供用于表示邮件已 seen) 现在在 XML 命名空间中可用。 有关更多信息,请参阅在不支持 \Recent 时标记 IMAP 消息userFlagspring-doc.cn

邮件消息映射

现在,您可以将入站邮件消息与包含邮件标头的有效负载和包含电子邮件内容的有效负载进行映射。 以前,有效负载始终是 raw 。 有关更多信息,请参阅入站邮件映射MessageHeadersMimeMessagespring-doc.cn

JMS 更改

本节描述了对 Spring 集成 JMS 功能的一般更改。spring-doc.cn

标头映射器

现在,通过调用其方法将标准标头映射为 message 属性。 有关更多信息,请参见Mapping Message Headers to and from JMS MessageDefaultJmsHeaderMappercorrelationIdtoString()spring-doc.cn

异步网关

JMS 出站网关现在具有一个属性。 有关更多信息,请参阅异步网关asyncspring-doc.cn

Aggregator 更改

当 POJO 聚合器释放对象集合时,行为会发生变化。 这种情况很少见,但是,如果您的应用程序这样做,则需要对 POJO 进行少量更改。 请参阅此 重要提示:SimpleMessageGroup.getMessages() 方法返回一个 unmodifiableCollectionnote 了解更多信息。Message<?>spring-doc.cn

TCP/UDP 更改

本节描述了对 Spring 集成 TCP/UDP 功能的一般更改。spring-doc.cn

事件

当服务器连接工厂启动时,会发出一个新的。 有关更多信息,请参阅 TCP 连接事件TcpConnectionServerListeningEventspring-doc.cn

现在,您可以在 . 有关更多信息,请参阅 UDP 适配器destination-expressionsocket-expression<int-ip:udp-outbound-channel-adapter>spring-doc.cn

流反序列化器

在组装整个消息之前无法分配最终缓冲区的各种反序列化器现在支持池化接收数据的原始缓冲区,而不是为每个消息创建和丢弃缓冲区。 有关更多信息,请参阅 TCP 连接工厂spring-doc.cn

TCP 消息映射器

消息映射器现在可以选择设置配置的内容类型标头。 有关更多信息,请参阅 IP 消息报头spring-doc.cn

文件更改

本节描述了对 Spring 集成文件功能的一般更改。spring-doc.cn

目标目录创建

为 生成的文件名 可以表示一个子路径,用于在目标目录中保存文件的所需目录结构。 有关更多信息,请参阅生成文件名FileWritingMessageHandlerspring-doc.cn

现在,将目录扫描逻辑隐藏在内部类中。 我们添加了 and 选项来启用此行为。 由于 API 不一致,我们弃用了 top-level。 有关更多信息,请参阅 WatchServiceDirectoryScannerFileReadingMessageSourceWatchServiceuse-watch-servicewatch-eventsWatchServiceDirectoryScannerspring-doc.cn

缓冲区大小

在写入文件时,您现在可以指定缓冲区大小。spring-doc.cn

追加和刷新

现在,您可以在追加时避免刷新文件,并在空闲期间使用多种策略刷新数据。 有关更多信息,请参阅使用 APPEND_NO_FLUSH 时刷新文件spring-doc.cn

保留时间戳

现在,您可以配置出站通道适配器以设置目标文件的时间戳。 有关更多信息,请参阅 File Timestamps 文件时间戳lastmodifiedspring-doc.cn

Splitter 更改

现在,当文件完全读取时,它会自动关闭 FTP 或 SFTP 会话。 当出站网关返回 或当您使用新的 FTP 或 SFTP 流频道适配器时,这适用。 我们还引入了一个新选项,可以转换为 JSON 以实现轻松的下游网络交互。 有关更多信息,请参阅 File SplitterFileSplitterInputStreammarkers-jsonFileSplitter.FileMarkerStringspring-doc.cn

文件过滤器

我们添加了作为 . 有关更多信息,请参阅读取文件ChainFileListFilterCompositeFileListFilterspring-doc.cn

AMQP 更改

本节描述了对 Spring 集成 AMQP 功能的一般更改。spring-doc.cn

内容类型消息转换器

出站终端节点现在支持配置了此类 ,您可以根据 Message 内容类型选择转换器。 有关更多信息,请参阅 出站消息转换RabbitTemplateContentTypeDelegatingMessageConverterspring-doc.cn

延迟消息处理的标头

Spring AMQP 1.6 增加了对延迟消息交换的支持。 标头映射现在支持此功能使用的标头 ( 和 )。amqp_delayamqp_receivedDelayspring-doc.cn

AMQP 支持的通道

AMQP 支持的通道现在支持消息映射。 有关更多信息,请参见 AMQP 支持的消息通道spring-doc.cn

Redis 更改

本节描述了 Spring Integration Redis 功能的一般更改。spring-doc.cn

List Push/Pop Direction

以前,队列通道适配器总是在固定方向上使用 Redis 列表,推送到左端并从右端读取。 现在,您可以分别使用 和 的 和 选项来配置读取和写入方向。 有关更多信息,请参阅 Redis Queue Inbound Channel AdapterRedis Queue Outbound Channel AdapterrightPopleftPushRedisQueueMessageDrivenEndpointRedisQueueOutboundChannelAdapterspring-doc.cn

队列入站网关默认序列化程序

入站网关中的默认序列化程序已更改为 a,以便与出站网关兼容。 有关更多信息,请参阅 Redis 队列入站网关JdkSerializationRedisSerializerspring-doc.cn

HTTP 更改

以前,对于正文(例如 )没有标头的请求,会忽略正文。 在此版本中,此类请求的内容类型被视为与建议的内容类型 由 RFC 2616 提供。 有关更多信息,请参阅 Http 入站组件POSTcontent-typeapplication/octet-streamspring-doc.cn

uriVariablesExpression现在默认使用 a(自 4.3.15 起)。 有关更多信息,请参阅映射 URI 变量SimpleEvaluationContextspring-doc.cn

SFTP 更改

本节描述了对 Spring 集成 SFTP 功能的一般更改。spring-doc.cn

工厂 Bean

我们添加了一个新的工厂 Bean 来简化 SFTP 的 Jsch 代理的配置。 有关更多信息,请参阅。JschProxyFactoryBeanspring-doc.cn

chmod变化

SFTP 出站网关(for 和 commands)和 SFTP 出站通道适配器现在支持在上传后更改远程文件权限的属性。 有关更多信息,请参阅 和 。putmputchmodSFTP Outbound Channel AdapterSFTP Outbound Gatewayspring-doc.cn

FTP 更改

本节描述了对 Spring 集成 FTP 功能的一般更改。spring-doc.cn

会话更改

现在支持 and 方法,因为底层 FTP 客户端可以使用它。 这样,您现在可以配置没有表达式的 。 您还可以配置 without 或 . 有关更多信息,请参阅 FTP/FTPS 适配器FtpSessionnulllist()listNames()FtpOutboundGatewayremoteDirectory<int-ftp:inbound-channel-adapter>remote-directoryremote-directory-expressionspring-doc.cn

路由器更改

现在支持超类映射,以避免在多个继承者的情况下同一通道出现重复。 为此,在初始化期间加载映射类以快速失败。ErrorMessageExceptionTypeRouterExceptionErrorMessageExceptionTypeRouterClassNotFoundExceptionspring-doc.cn

有关详细信息,请参阅路由器spring-doc.cn

标头映射

本节介绍版本 4.2 和 4.3 之间标头映射的更改。spring-doc.cn

常规

AMQP、WS 和 XMPP 标头映射(例如 和 )现在支持否定模式。 有关更多信息,请参阅 AMQP 消息头WS 消息头XMPP 消息头request-header-mappingreply-header-mappingspring-doc.cn

AMQP 标头映射

以前,默认情况下仅映射标准 AMQP 标头。 您必须显式启用用户定义的标头的映射。 在此版本中,默认情况下会映射所有标头。 此外,默认情况下不再映射入站标头。 有关更多信息,请参阅 AMQP 消息标头amqp_deliveryModespring-doc.cn

Groovy 脚本

您现在可以使用 hint 或任何其他选项配置 groovy 脚本。 有关更多信息,请参阅 Groovy 配置compile-staticCompilerConfigurationspring-doc.cn

@InboundChannelAdapter变化

现在具有常规 的 alias 属性。 此外,目标组件现在可以以后期绑定方式从其提供的名称 ( options) 解析目标 Bean。 有关更多信息,请参阅 Annotation Support@InboundChannelAdapterchannelvalueSourcePollingChannelAdapteroutputChanneloutputChannelNamespring-doc.cn

XMPP 更改

XMPP 通道适配器现在支持 XMPP 扩展 (XEP)。 有关更多信息,请参阅 XMPP 扩展spring-doc.cn

WireTap 延迟绑定

现在可以接受稍后在第一个活动拦截器操作期间解析为目标的 a。 有关详细信息,请参见 Wire TapWireTapChannelInterceptorchannelNameMessageChannelspring-doc.cn

ChannelMessageStoreQueryProvider变化

现在支持 H2 数据库。 有关更多信息,请参阅 Backing Message ChannelsChannelMessageStoreQueryProviderspring-doc.cn

WebSocket 更改

现在公开一个选项,并公开一个选项。 有关更多信息,请参阅 WebSockets 支持ServerWebSocketContainerallowedOriginsSockJsServiceOptionssuppressCorsspring-doc.cn

4.1 和 4.2 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 4.2 添加了许多新组件。spring-doc.cn

主要管理/JMX 返工

我们添加了一个新的策略界面。 此更改以及 JMX 和管理基础结构中的其他更改,提供了对管理配置和运行时性能的更多控制。MetricsFactoryspring-doc.cn

但是,这对 (某些) 用户环境有一些重要影响。spring-doc.cn

有关完整详细信息,请参阅指标和管理 和 JMX 改进spring-doc.cn

MongoDB 元数据存储

现已推出。 有关更多信息,请参阅 MongoDB 元数据存储MongoDbMetadataStorespring-doc.cn

SecuredChannel 注解

我们引入了注释,替换了已弃用的 . 有关更多信息,请参阅 Spring Integration 中的安全性@SecuredChannelChannelSecurityInterceptorFactoryBeanspring-doc.cn

SecurityContext增殖

我们引入了 for the propagation from one message flow's thread to another message flow. 有关更多信息,请参阅 Spring Integration 中的安全性SecurityContextPropagationChannelInterceptorSecurityContextspring-doc.cn

FileSplitter 文件拆分器

在 4.1.2 中,我们添加了 ,它将文本文件拆分为几行。 现在,它在命名空间中得到了完全支持。 有关更多信息,请参阅 File SplitterFileSplitterint-file:spring-doc.cn

Zookeeper 支持

我们向框架添加了 Zookeeper 支持,以便在集群或多主机环境中运行时提供帮助。 此更改会影响以下功能:spring-doc.cn

有关更多信息,请参阅 Zookeeper 支持spring-doc.cn

线程屏障

新的线程组件可用,允许线程暂停,直到发生某些异步事件。 有关更多信息,请参见 Thread Barrier<int:barrier/>spring-doc.cn

STOMP 支持

我们向框架添加了 STOMP 支持作为入站和出站通道适配器对。 有关更多信息,请参阅 STOMP 支持spring-doc.cn

Codec

引入了一种新的抽象,用于将对象编码和解码到 和 从 。 我们添加了一个使用 Kryo 的实现。 我们还添加了基于编解码器的转换器和消息转换器。 有关更多信息,请参阅 编解码器Codecbyte[]spring-doc.cn

消息 PreparedStatement Setter

( 和 ) 提供了新的函数接口回调,作为使用上下文填充 上的参数的替代方法。 有关更多信息,请参阅 Outbound Channel AdapterMessagePreparedStatementSetterJdbcMessageHandler<int-jdbc:outbound-gateway><int-jdbc:outbound-channel-adapter>SqlParameterSourceFactoryPreparedStatementrequestMessagespring-doc.cn

一般更改

本节介绍从版本 4.1 到版本 4.2 的一般更改。spring-doc.cn

窃听

作为 existing 属性的替代方法,该元素现在支持该属性。selector<wire-tap/>selector-expressionspring-doc.cn

文件更改

有关这些更改的更多信息,请参阅文件支持spring-doc.cn

添加新行

和 现在支持一个属性。 如果设置为 ,则在写入消息后,会向文件附加一个新行。 默认属性值为 .<int-file:outbound-channel-adapter><int-file:outbound-gateway>append-new-linetruefalsespring-doc.cn

忽略隐藏文件

我们添加了 to 属性,让您设置是否从源目录中选取隐藏文件。 它默认为 .ignore-hidden<int-file:inbound-channel-adapter>truespring-doc.cn

写入有效负载InputStream

现在还接受作为有效的消息负载类型。FileWritingMessageHandlerInputStreamspring-doc.cn

HeadDirectoryScanner

现在,您可以将 与其他实现一起使用。HeadDirectoryScannerFileListFilterspring-doc.cn

上次修改的过滤器

我们添加了 .LastModifiedFileListFilterspring-doc.cn

监视 Service Directory Scanner

我们添加了 .WatchServiceDirectoryScannerspring-doc.cn

持久文件列表筛选器更改

这具有一个新属性 () ,当设置为 时,如果它实现(例如,),则调用元数据存储。AbstractPersistentFileListFilterflushOnUpdatetrueflush()FlushablePropertiesPersistingMetadataStorespring-doc.cn

类套餐更改

我们将类从 移动到 。ScatterGatherHandlerorg.springframework.integration.handlerorg.springframework.integration.scattergatherspring-doc.cn

TCP 更改

本节描述了对 Spring 集成 TCP 功能的一般更改。spring-doc.cn

TCP 序列化程序

TCP 不再是 . 现在,这由 classes 完成。 如果直接在代码中使用序列化程序,则可能需要将 .Serializersflush()OutputStreamTcpNxxConnectionflush()OutputStreamspring-doc.cn

服务器套接字异常

TcpConnectionServerExceptionEvent现在,每当 TCP 服务器套接字(也添加到 4.1.3 和 4.0.7)上发生意外异常时,都会发布实例。 有关更多信息,请参阅 TCP 连接事件spring-doc.cn

TCP 服务器端口

如果将 TCP 服务器套接字工厂配置为侦听随机端口,则现在可以使用 获取 OS 选择的实际端口。 也可用。getPort()getServerSocketAddress()spring-doc.cn

有关更多信息,请参阅“TCP 连接工厂”。spring-doc.cn

TCP 网关远程超时

现在支持作为 existing 属性的替代项。 这允许根据每条消息设置超时。TcpOutboundGatewayremote-timeout-expressionremote-timeoutspring-doc.cn

此外,the 不再默认为 与 相同的值,这具有完全不同的含义。remote-timeoutreply-timeoutspring-doc.cn

TCP SSLSession 可用于标头映射

TcpConnectionimplementations 现在支持让您从 session 中提取信息以添加到 message headers。 有关更多信息,请参阅 IP 消息报头getSslSession()spring-doc.cn

TCP 事件

现在,每当发生关联异常时(例如,将消息发送到不存在的套接字),都会发布新事件。spring-doc.cn

已弃用。 请改用泛型事件适配器。TcpConnectionEventListeningMessageProducerspring-doc.cn

有关更多信息,请参阅 TCP 连接事件spring-doc.cn

@InboundChannelAdapter变化

以前,入站通道适配器将属性默认为 (infinity)。 这与 的 XML 配置不一致,默认为 . 注解现在将此属性默认为 .@PollermaxMessagesPerPoll-1<inbound-channel-adapter/>11spring-doc.cn

API 变更

o.s.integration.util.FunctionIterator现在需要 a 而不是 . 这样做是为了消除对 Reactor 的不必要的硬依赖。 此迭代器的任何使用都需要更改导入。o.s.integration.util.Functionreactor.function.Functionspring-doc.cn

网关等功能仍支持 Reactor。 对于不需要依赖项的用户,已删除依赖项。Promisespring-doc.cn

JMS 更改

本节描述了对 Spring 集成 TCP 功能的一般更改。spring-doc.cn

Reply 侦听器延迟初始化

您现在可以将 JMS 出站网关中的回复侦听器配置为按需初始化并在空闲期后停止,而不是由网关的生命周期控制。 有关更多信息,请参阅出站网关spring-doc.cn

消息驱动端点中的转换错误

现在 用于转换错误。 在以前的版本中,它们会导致事务回滚和消息重新传递。error-channelspring-doc.cn

有关更多信息,请参阅消息驱动的通道适配器入站网关spring-doc.cn

默认确认模式

当使用隐式定义的 时,默认值现在是 。 我们建议在使用此容器时使用,以避免消息丢失。 此默认值现在适用于消息驱动的入站适配器和入站网关。 它已经是 JMS 支持的通道的默认通道。DefaultMessageListenerContaineracknowledgetransactedtransactedspring-doc.cn

有关更多信息,请参阅消息驱动的通道适配器入站网关spring-doc.cn

共享订阅

我们向消息驱动端点添加了对共享订阅 (JMS 2.0) 的命名空间支持,并将 . 以前,您必须将侦听器容器连接为声明才能使用共享连接。<int-jms:publish-subscribe-channel><bean/>spring-doc.cn

有关更多信息,请参阅 JMS 支持spring-doc.cn

条件轮询器

现在,我们为动态轮询提供了更大的灵活性。spring-doc.cn

有关更多信息,请参见Message Sources 的条件轮询器spring-doc.cn

AMQP 更改

本节描述了对 Spring 集成 AMQP 功能的一般更改。spring-doc.cn

发布者确认

现在支持 、 和 属性(其用途类似于 )。<int-amqp:outbound-gateway>confirm-correlation-expressionconfirm-ack-channelconfirm-nack-channel<int-amqp:outbound-channel-adapter>spring-doc.cn

关联数据

对于出站通道适配器和入站网关,如果关联数据是 a ,则它将成为 ack 或 nack 通道上消息的基础,并添加了额外的 Headers。 以前,任何关联数据(包括 )都作为 ack 或 nack 消息的有效负载返回。Message<?>Message<?>spring-doc.cn

入站网关属性

现在公开了该属性,以允许对 reply 的外部 bean 进行更多控制。 您还可以提供自己的实施。 此外,如果请求消息没有属性,则可以使用 if。<int-amqp:inbound-gateway>amqp-templateRabbitTemplateAmqpTemplatedefault-reply-toreplyTospring-doc.cn

有关更多信息,请参阅 AMQP 支持spring-doc.cn

XPath Splitter 改进

() 现在允许对 internal 进行配置,并支持 XPath 评估结果的模式(默认为 )。XPathMessageSplitter<int-xml:xpath-splitter>output-propertiesjavax.xml.transform.TransformerIteratortrueorg.w3c.dom.NodeListspring-doc.cn

有关更多信息,请参阅拆分 XML 消息spring-doc.cn

HTTP 更改

本节描述了对 Spring 集成 HTTP 功能的一般更改。spring-doc.cn

CORS

HTTP 入站终端节点( 和 )现在允许 跨域资源共享 (CORS) 的配置。<int-http:inbound-channel-adapter><int-http:inbound-gateway>spring-doc.cn

入站网关超时

您可以配置 HTTP 入站入口方式,以便在请求超时时返回您指定的状态代码。 默认值现在为 ,而不是 。500 Internal Server Error200 OKspring-doc.cn

有关更多信息,请参阅响应状态代码spring-doc.cn

表单数据

我们添加了代理请求的文档。 有关更多信息,请参阅 HTTP 支持multipart/form-dataspring-doc.cn

网关更改

本节描述了对 Spring Integration Gateway 功能的一般更改。spring-doc.cn

Gateway 方法可以返回CompletableFuture<?>

使用 Java 8 时,网关方法现在可以返回 . 有关更多信息,请参见 CompletableFutureCompletableFuture<?>spring-doc.cn

MessagingGateway 注释

请求和回复超时属性现在是允许使用属性占位符或 SPEL 进行配置。 请参见@MessagingGateway注释StringLongspring-doc.cn

Aggregator 更改

本节描述了对 Spring 集成聚合器功能的一般更改。spring-doc.cn

聚合商性能

此版本包括聚合组件(聚合器、resequencer 等)的一些性能改进,方法是在发布消息时更有效地从组中删除消息。 新方法 () 已添加到邮件存储中。 设置属性 (default: ) 以调整每个操作中删除的消息数。 目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。removeMessagesFromGroupremoveBatchSize100spring-doc.cn

输出消息组处理器

当对聚合器使用 或 inner bean 时,您现在可以直接绑定 . 此外,我们还添加了一个 ,用于返回组中的消息集合。 当输出处理器生成 的集合时,聚合器会单独释放这些消息。 配置 使聚合器成为消息屏障,消息被保留,直到它们全部到达,然后单独发布。 有关更多信息,请参阅 AggregatorrefMessageGroupProcessorSimpleMessageGroupProcessorMessage<?>SimpleMessageGroupProcessorspring-doc.cn

FTP 和 SFTP 更改

本节描述了对 Spring 集成 FTP 和 SFTP 功能的一般更改。spring-doc.cn

入站通道适配器

现在,您可以在入站通道适配器上指定 a,以便在运行时确定目录。 有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器remote-directory-expressionspring-doc.cn

Gateway 部分结果

当您使用 FTP 或 SFTP 出站网关对多个文件进行操作(使用 和 )时,异常可能会 在请求的一部分完成后发生。 如果出现此类情况,则会引发包含部分结果的 a。 有关更多信息,请参阅 FTP 出站网关SFTP 出站网关mgetmputPartialSuccessExceptionspring-doc.cn

委派 Session Factory

我们添加了一个委托会话工厂,允许根据某些线程上下文值选择特定的会话工厂。spring-doc.cn

有关更多信息,请参阅委派 Session Factory委派 Session Factoryspring-doc.cn

默认 sftp 会话工厂

以前,无条件允许连接到未知主机。 这现在可以配置 (default: )。DefaultSftpSessionFactoryfalsespring-doc.cn

工厂现在需要配置的 , 文件,除非该属性为 (default: )。knownHostsallowUnknownKeystruefalsespring-doc.cn

Message Session 回调

我们引入了 ,以使用 .MessageSessionCallback<F, T>SessionrequestMessage<int-(s)ftp:outbound-gateway/>spring-doc.cn

Websocket 更改

我们添加了对 的支持,以允许对内部 . 有关更多信息,请参阅 WebSockets 命名空间支持WebSocketHandlerDecoratorFactoryServerWebSocketContainerWebSocketHandlerspring-doc.cn

应用程序事件适配器更改

适配器现在可以作为直接允许省略自定义扩展进行操作。 为此,我们引入了 boolean 属性。 有关更多信息,请参见Spring ApplicationEvent SupportApplicationEventpayloadeventApplicationEventpublish-payload<int-event:outbound-channel-adapter>spring-doc.cn

4.0 和 4.1 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 4.1 添加了许多新组件。spring-doc.cn

Promise<?> 网关

消息传递网关方法现在支持 Reactor 返回类型。 请参阅 异步网关Promisespring-doc.cn

WebSocket 支持

该模块现已推出。 它完全基于 Spring WebSocket 和 Spring Messaging 模块,并提供了一个 . 有关更多信息,请参阅 WebSockets 支持WebSocket<inbound-channel-adapter><outbound-channel-adapter>spring-doc.cn

Scatter-Gather 企业集成模式

我们实施了 scatter-gather 企业集成模式。 有关更多信息,请参阅 Scatter-Gatherspring-doc.cn

Routing Slip Pattern

我们添加了路由滑 EIP 模式实现。 有关更多信息,请参阅路由单spring-doc.cn

幂等接收器模式

我们通过在 XML 中添加组件或 Java 配置的 and 注释来添加幂等接收器企业集成模式实现。 有关更多信息,请参阅 Idempotent Receiver Enterprise Integration PatternJavadoc<idempotent-receiver>IdempotentReceiverInterceptorIdempotentReceiverspring-doc.cn

福音JsonObjectMapper

我们为 JSON 转换器添加了 Boon。 有关更多信息,请参阅 TransformerJsonObjectMapperspring-doc.cn

Redis 队列网关

我们添加了 and 组件。 请参阅 Redis 队列入站网关Redis 队列出站网关<redis-queue-inbound-gateway><redis-queue-outbound-gateway>spring-doc.cn

PollSkipAdvice

我们添加了 ,您可以在 中使用它来确定是否应由您使用 实施的某些条件来抑制(跳过)当前轮询。 有关更多信息,请参阅 轮询器PollSkipAdvice<advice-chain><poller>PollSkipStrategyspring-doc.cn

一般更改

本节介绍从版本 4.0 到版本 4.1 的一般更改。spring-doc.cn

AMQP 入站终端节点,通道

使用消息侦听器容器的元素(入站终端节点和通道)现在支持该属性。 有关更多信息,请参阅 AMQP 支持missing-queues-fatalspring-doc.cn

AMQP 出站终端节点

AMQP 出站终端节点支持名为 (default: ) 的新属性。 When 时,在第一条消息到达之前,不会建立与代理的连接(假设没有入站终端节点,这些终端节点总是在启动期间尝试建立连接)。 设置为 时,将在应用程序启动期间尝试建立连接。 有关更多信息,请参阅 AMQP 支持lazy-connecttruetruefalsespring-doc.cn

简单消息存储

在调用 时,不再复制组。 有关详细信息,请参阅 [WARNING]。SimpleMessageStoregetMessageGroup()spring-doc.cn

Web 服务出站网关:encode-uri

现在提供了一个属性,允许在发送请求之前禁用 URI 对象的编码。<ws:outbound-gateway/>encode-urispring-doc.cn

Http 入站通道适配器和状态代码

现在可以配置 以覆盖默认状态。 有关更多信息,请参阅 HTTP 命名空间支持<http:inbound-channel-adapter>status-code-expression200 OKspring-doc.cn

MQTT 适配器更改

您现在可以将 MQTT 通道适配器配置为连接到多个服务器,例如,支持高可用性 (HA)。 有关更多信息,请参阅 MQTT 支持spring-doc.cn

MQTT 消息驱动的通道适配器现在支持为每个订阅指定 QoS 设置。 有关更多信息,请参见入站 (消息驱动) 通道适配器spring-doc.cn

MQTT 出站通道适配器现在支持异步发送,从而避免在确认交付之前阻塞。 有关更多信息,请参阅 Outbound Channel Adapterspring-doc.cn

现在可以在运行时以编程方式订阅和取消订阅主题。 有关更多信息,请参见入站 (消息驱动) 通道适配器spring-doc.cn

FTP 和 SFTP 适配器更改

FTP 和 SFTP 出站通道适配器现在支持附加到远程文件,并在远程文件已存在时执行特定操作。 远程文件模板现在也支持此功能以及 和 。 此外,远程文件模板还提供对底层客户端对象的访问,从而允许访问低级 API。rmdir()exists()spring-doc.cn

有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器spring-doc.cn

Splitter 和 Iterator

Splitter组件现在支持用于生成输出消息的 As Result对象。 有关更多信息,请参阅 SplitterIteratorspring-doc.cn

聚合

Aggregatorinstancess 现在支持新属性 。 有关更多信息,请参阅 Aggregatorexpire-groups-upon-timeoutspring-doc.cn

内容丰富器改进

我们添加了一个属性,如果返回,则评估并返回该属性。 您可以将其添加到 和 中。 有关更多信息,请参阅 内容扩充器null-result-expression<enricher>null<header><property>spring-doc.cn

我们添加了一个属性,该属性用于处理 . 这样,您就可以返回用于扩充的替代对象。 有关更多信息,请参阅 内容扩充器error-channelExceptionrequest-channelspring-doc.cn

Header Channel Registry

该元素的子元素现在可以覆盖标题通道注册表保留通道映射的默认时间。 有关更多信息,请参阅 Header Channel Registry<header-enricher/><header-channels-to-string/>spring-doc.cn

有序关机

我们对 orderly shutdown 算法进行了改进。 有关更多信息,请参见 Orderly Shutdownspring-doc.cn

管理RecipientListRouter

现在提供了多个管理操作,用于在运行时配置收件人。 这样,您现在可以从一开始就配置 without any。 有关更多信息,请参阅 RecipientListRouterManagementRecipientListRouter<recipient-list-router><recipient>spring-doc.cn

AbstractHeaderMapper:NON_STANDARD_HEADERS token

该实现现在提供了额外的令牌来映射任何用户定义的标头,默认情况下不会映射这些标头。 有关更多信息,请参阅 AMQP 消息标头AbstractHeaderMapperNON_STANDARD_HEADERSspring-doc.cn

AMQP 通道:template-channel-transacted

我们引入了 AMQP 实例的属性。 有关更多信息,请参见 AMQP 支持的消息通道template-channel-transactedMessageChannelspring-doc.cn

Syslog 适配器

默认 syslog 消息转换器现在可以选择在有效负载中保留原始消息,同时仍设置标头。 有关更多信息,请参阅 Syslog 入站通道适配器spring-doc.cn

异步网关

除了前面提到的返回类型之外,网关方法现在还可以返回 Spring Framework 4.0 中引入的 。 您还可以在网关中禁用异步处理,让下游流直接返回 . 请参阅 异步网关PromiseListenableFutureFuturespring-doc.cn

聚合商建议链

Aggregator现在 support 和 child 元素来为操作提供建议。 有关更多信息,请参阅使用 XML 配置聚合器Resequencer<expire-advice-chain/><expire-transactional/>forceCompletespring-doc.cn

出站通道适配器和脚本

现在支持子元素。 底层脚本必须具有 return type 或 return 。 请参阅 Groovy 支持脚本支持<int:outbound-channel-adapter/><script/>voidnullspring-doc.cn

Resequencer 更改

现在,默认情况下,当 resequencer 中的消息组超时(使用 或 a )时,会立即丢弃延迟到达的消息。 请参阅 Resequencergroup-timeoutMessageGroupStoreReaperspring-doc.cn

可选的 POJO 方法参数

Spring 集成现在始终如一地处理 Java 8 的类型。 请参阅配置 Service ActivatorOptionalspring-doc.cn

QueueChannelbacked Queue 类型

backed 已从 更改为更通用的 . 此更改允许使用任何外部实现(例如 Reactor 的 )。 参见 QueueChannel 配置QueueChannelQueue typeBlockingQueueQueueQueuePersistentQueuespring-doc.cn

ChannelInterceptor变化

现在支持其他 and 方法。 请参见Channel InterceptorChannelInterceptorafterSendCompletion()afterReceiveCompletion()spring-doc.cn

IMAP PEEK

从版本 4.1.1 开始,如果将 JavaMail 属性显式设置为 (where is 或 ),则行为会发生变化。 请参阅 [重要 ]。mail.[protocol].peekfalse[protocol]imapimapsspring-doc.cn

3.0 和 4.0 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 4.0 添加了许多新组件。spring-doc.cn

MQTT 通道适配器

MQTT 通道适配器(以前在 Spring Integration Extensions 存储库中提供)现在作为常规 Spring Integration 发行版的一部分提供。 请参阅 MQTT 支持spring-doc.cn

@EnableIntegration

我们添加了 Comments,以允许在使用类时声明标准 Spring Integration bean。 有关更多信息,请参阅 Annotation Support@EnableIntegration@Configurationspring-doc.cn

@IntegrationComponentScan

我们添加了 Comments 以允许对 Spring 集成特定的组件进行 Classpath 扫描。 有关更多信息,请参阅 Annotation Support@IntegrationComponentScanspring-doc.cn

“@EnableMessageHistory”

现在,您可以在类中使用 annotation 启用消息历史记录。 此外,JMX MBean 还可以修改消息历史记录设置。 此外,还可以跟踪带注释的终端节点(例如 、 等)的自动创建实例。 有关更多信息,请参阅消息历史记录@EnableMessageHistory@ConfigurationMessageHistoryMessageHandler@ServiceActivator@Splitterspring-doc.cn

@MessagingGateway

现在,您可以使用注释配置 Messaging Gateway 接口。 它是 XML 元素的类似物。 有关更多信息,请参见@MessagingGateway注释@MessagingGateway<int:gateway/>spring-doc.cn

Spring Boot@EnableAutoConfiguration

除了前面提到的 Comments 之外,我们还引入了一个 hook,允许使用 Spring Boot 的 Comments 配置 Spring 集成基础设施 bean。 有关详细信息,请参阅 Spring Boot 参考指南中的“自动配置”。@EnableIntegration@EnableAutoConfigurationspring-doc.cn

@GlobalChannelInterceptor

除了上面提到的 annotation 之外,我们还引入了 annotation。 有关更多信息,请参阅注释支持@EnableIntegration@GlobalChannelInterceptorspring-doc.cn

@IntegrationConverter

我们引入了 annotation 作为组件的类似物。 有关更多信息,请参阅注释支持@IntegrationConverter<int:converter/>spring-doc.cn

@EnablePublisher

我们添加了 annotation 以允许规范 for annotations。 有关更多信息,请参阅 Annotation Support@EnablePublisherdefault-publisher-channel@Publisherspring-doc.cn

Redis 通道消息存储

我们添加了一个 Redis,该 Redis 经过优化,可在支持持久性时使用。 有关更多信息,请参阅 Redis 通道消息存储MessageGroupStoreQueueChannelspring-doc.cn

我们添加了一个 Redis . 您可以使用它来按优先级检索消息。 有关更多信息,请参阅 Redis 通道消息存储ChannelPriorityMessageStorespring-doc.cn

MongodDB Channel 消息存储

MongoDB 支持现在提供 ,这是特定于通道的实现。 使用 ,您可以在元素中使用它来实现持久消息的优先级顺序轮询。 有关更多信息,请参阅 MongoDB 通道消息存储MongoDbChannelMessageStoreMessageStorepriorityEnabled = true<int:priority-queue>spring-doc.cn

@EnableIntegrationMBeanExport

现在,您可以在类中启用 with the annotation。 有关更多信息,请参阅 MBean 导出器IntegrationMBeanExporter@EnableIntegrationMBeanExport@Configurationspring-doc.cn

ChannelSecurityInterceptorFactoryBean

ChannelSecurityInterceptorFactoryBean现在支持为使用类的消息通道配置 Spring Security。 有关更多信息,请参阅 Spring Integration 中的安全性@Configurationspring-doc.cn

Redis 命令网关

Redis 支持现在提供了使用该方法执行通用 Redis 命令的组件。 有关更多信息,请参阅 Redis 出站命令网关<outbound-gateway>RedisConnection#executespring-doc.cn

RedisLockRegistry

现在,它可用于支持对多个应用程序实例和服务器可见的全局锁定。 这些可用于跨多个应用程序实例聚合消息处理程序,以便仅在一个实例上发生组发布。 有关更多信息,请参阅 Redis Lock Registry and AggregatorRedisLockRegistryspring-doc.cn

@Poller

基于 Annotation 的消息收发配置现在可以具有属性。 这意味着用 、 和类似注释注释的方法现在可以使用对 . 有关更多信息,请参阅注释支持poller@ServiceActivator@AggregatorinputChannelPollableChannelspring-doc.cn

@InboundChannelAdapter以及带注释的端点SmartLifecycle

我们添加了 method 注解。 它是 XML 组件的类似物。 此外,所有消息收发注释现在都提供选项。 有关更多信息,请参阅注释支持@InboundChannelAdapter<int:inbound-channel-adapter>SmartLifecyclespring-doc.cn

Twitter 搜索出站网关

我们添加了一个新的 Twitter 端点:. 与每次都使用相同的搜索查询进行轮询的搜索入站适配器不同,出站网关允许按需自定义查询。 有关更多信息,请参阅 Spring Integration Social Twitter<int-twitter-search-outbound-gateway/>spring-doc.cn

@BridgeFrom和 Annotations@BridgeTo

我们引入了 和 方法注解来标记类中的 bean。 有关更多信息,请参阅注释支持@BridgeFrom@BridgeTo@BeanMessageChannel@Configurationspring-doc.cn

元消息注释

消息收发注释(、、 、 和其他注释)现在可以配置为用户定义的消息收发注释的元注释。 此外,用户定义的注释可以具有相同的属性 (、 、 和其他)。 有关更多信息,请参阅注释支持@ServiceActivator@Router@MessagingGatewayinputChannel@PollerautoStartupspring-doc.cn

一般更改

本节介绍从版本 3.0 到版本 4.0 的一般更改。spring-doc.cn

需要 Spring Framework 4.0

我们将核心消息传递抽象(、 和其他)移动到 Spring Framework 模块。 在代码中直接引用这些类的开发人员需要进行更改,如 3.0 到 4.0 迁移指南的第一部分所述。MessageMessageChannelspring-messagingspring-doc.cn

XPath Header Enricher 的 Header Type

我们引入了 . 此属性提供 header 值的目标类型(XPath 表达式评估的结果将转换为该类型)。 有关更多信息,请参阅 XPath Header Enricherheader-typeheader<int-xml:xpath-header-enricher>spring-doc.cn

对象到 JSON 转换器:节点结果

我们引入了 . 此属性为将对象映射到 JSON 的结果提供目标类型。 它支持 (默认) 和 . 有关更多信息,请参阅从 3.0 版本开始, Spring 集成还提供了内置的 #xpath SPEL 函数,用于表达式。result-type<int:object-to-json-transformer>STRINGNODEspring-doc.cn

JMS 标头映射

现在将传入的 Headers 映射到 Spring Integration Headers。 以前,仅考虑用于出站邮件。 有关更多信息,请参阅将消息标头映射到 JMS 消息和从 JMS 消息映射消息。DefaultJmsHeaderMapperJMSPriorityprioritypriorityspring-doc.cn

JMS 出站通道适配器

JMS 出站通道适配器现在支持属性 (default: )。 以前,您必须注入自定义的 transaction 才能使用。 请参见出站通道适配器session-transactedfalseJmsTemplatespring-doc.cn

JMS 入站通道适配器

JMS 入站通道适配器现在支持属性 (default: )。 以前,您必须注入自定义的 transaction 才能使用。 适配器允许在 中执行“transacted”,这是不正确的,因此无法正常工作。 不再允许此值。 请参见入站通道适配器session-transactedfalseJmsTemplateacknowledgeModespring-doc.cn

数据类型通道

现在,您可以指定在将 payloads(如有必要)转换为 Datatype 通道中接受的实例之一时使用。 有关更多信息,请参阅数据类型通道配置MessageConverterdatatypespring-doc.cn

更简单的 Retry Advice 配置

我们添加了简化的命名空间支持来配置 . 有关更多信息,请参阅配置重试建议RequestHandlerRetryAdvicespring-doc.cn

关联终端节点:基于时间的发布策略

我们向 和 添加了互斥的 and 属性。 这些属性允许强制完成 partial ,前提是 不会释放组,并且在指定的时间内没有其他消息到达。 有关更多信息,请参阅使用 XML 配置聚合器group-timeoutgroup-timeout-expression<int:aggregator><int:resequencer>MessageGroupReleaseStrategyspring-doc.cn

Redis 元数据存储

现在实现 ,使其在多应用程序实例或服务器环境中的实现中使用。 有关更多信息,请参阅 Redis 元数据存储读取文件FTP 入站通道适配器SFTP 入站通道适配器RedisMetadataStoreConcurrentMetadataStoreAbstractPersistentAcceptOnceFileListFilterspring-doc.cn

JdbcChannelMessageStorePriorityChannel

T'JdbcChannelMessageStore' 现在实现了 ,让它用作实例的引用。 有关更多信息,请参阅支持消息通道PriorityCapableChannelMessageStoremessage-storepriority-queuespring-doc.cn

AMQP 终端节点交付模式

默认情况下, Spring AMQP 在代理上创建持久消息。 您可以通过设置标头或自定义映射器来覆盖此行为。 我们向适配器添加了一个方便的属性,以便更轻松地配置此重要设置。 有关更多信息,请参阅出站通道适配器出站网关amqp_deliveryModedefault-delivery-modespring-doc.cn

FTP 超时

现在公开了 , , 和 属性,避免了对工厂进行子类化来设置这些公共属性的需要。 这些方法仍可用于更高级的配置。 有关更多信息,请参阅 FTP Session FactoryDefaultFtpSessionFactoryconnectTimeoutdefaultTimeoutdataTimeoutpostProcess*spring-doc.cn

唽:StatusUpdatingMessageHandler

() 现在支持使用该属性来构建用于更新时间轴状态的对象。 例如,此功能允许附加图像。 有关更多信息,请参见 Spring Integration Social TwitterStatusUpdatingMessageHandler<int-twitter:outbound-channel-adapter>tweet-data-expressionorg.springframework.social.twitter.api.TweetDataspring-doc.cn

JPA 检索网关:id-expression

我们引入了 to perform 的属性。 有关更多信息,请参阅检索出站网关id-expression<int-jpa:retrieving-outbound-gateway>EntityManager.find(Class entityClass, Object primaryKey)spring-doc.cn

TCP 反序列化事件

当其中一个标准反序列化器在将输入流解码为消息时遇到问题时,它现在会发出一个 ,让应用程序检查发生异常时的数据。 有关更多信息,请参阅 TCP 连接事件TcpDeserializationExceptionEventspring-doc.cn

定义上的消息注释@Bean

现在,您可以在类中的定义上配置消息注释(、、 、 和其他)。 有关更多信息,请参阅注释支持@ServiceActivator@Router@InboundChannelAdapter@Bean@Configurationspring-doc.cn

2.2 和 3.0 之间的变化

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 3.0 添加了许多新组件。spring-doc.cn

HTTP 请求映射

HTTP 模块现在为入站终端节点提供强大的请求映射支持。 我们将类替换为 ,它在应用程序上下文中的 bean 名称下注册。 在解析 HTTP 入站端点时,要么注册一个新的 Bean,要么重用现有的 Bean。 为了实现灵活的请求映射配置, Spring 集成提供了 的子元素 和 . 现在,两个 HTTP 入站端点都完全基于 Spring MVC 3.1 中引入的请求映射基础设施。 例如,单个入站终端节点支持多个路径。 有关更多信息,请参阅 HTTP 命名空间支持UriPathHandlerMappingIntegrationRequestMappingHandlerMappingintegrationRequestMappingHandlerMappingIntegrationRequestMappingHandlerMapping<request-mapping/><http:inbound-channel-adapter/><http:inbound-gateway/>spring-doc.cn

Spring 表达式语言 (SpEL) 配置

我们添加了一个新的允许配置自定义实现和函数,以便在整个框架中的 SPEL 表达式中使用。 有关更多信息,请参阅 Spring 表达式语言 (SpEL)。IntegrationEvaluationContextFactoryBeanPropertyAccessorspring-doc.cn

SPEL 函数支持

为了使用静态函数自定义 SPEL,我们引入了该组件。 我们还添加了两个内置函数:和 . 有关更多信息,请参阅 SPEL 函数EvaluationContextMethod<spel-function/>#jsonPath#xpathspring-doc.cn

SPEL PropertyAccessors 支持

为了使用实现自定义 SPEL,我们添加了组件。 有关详细信息,请参阅 属性访问器EvaluationContextPropertyAccessor<spel-property-accessors/>spring-doc.cn

Redis:新组件

我们添加了一个新的基于 Redis 的 MetadataStore 实现。 您可以使用 来维护跨应用程序重启的状态。 此新实现可与适配器一起使用,例如:RedisMetadataStoreMetadataStoreMetadataStorespring-doc.cn

我们添加了新的基于队列的组件。 我们添加了 and 组件,以分别在 Redis List 上执行 'right pop' 和 'left push' 操作。<int-redis:queue-inbound-channel-adapter/><int-redis:queue-outbound-channel-adapter/>spring-doc.cn

有关更多信息,请参阅“Redis 支持”。spring-doc.cn

Header Channel Registry

现在,您可以指示框架将回复通道和错误通道存储在注册表中,以便以后解决。 这对于 or 可能丢失的情况(例如,在序列化消息时)非常有用。 有关更多信息,请参阅 Header EnricherreplyChannelerrorChannelspring-doc.cn

MongoDB 支持:新增ConfigurableMongoDbMessageStore

除了现有的 之外,我们还引入了新的 . 这为 MongoDB 提供了更强大、更灵活的实现。 它与现有商店不向后兼容,但我们建议将其用于新应用程序。 现有应用程序可以使用它,但旧存储中的消息不可用。 有关更多信息,请参阅 MongoDb 支持eMongoDbMessageStoreConfigurableMongoDbMessageStoreMessageStorespring-doc.cn

Syslog 支持

在 2.2 的基础上,Spring Integration 3.0 引入了专为接收 SYSLOG 消息而定制的入站通道适配器。 有关更多信息,请参阅 Syslog 支持SyslogToMapTransformerUDPTCPspring-doc.cn

tail支持

我们添加了文件入站通道适配器,当将行添加到文本文件的末尾时,这些适配器使用命令生成消息。 请参见 'tail'ing 文件tailspring-doc.cn

JMX 支持

我们添加了 . 此适配器查询 JMX MBean 树并发送一条消息,其中包含一个有效负载,该有效负载是与查询匹配的对象图。 默认情况下,MBean 映射到基元和简单对象(例如 、 和数组)。 它允许简单地转换为 JSON 等。<int-jmx:tree-polling-channel-adapter/>MapListspring-doc.cn

现在允许使用 属性 配置自定义。IntegrationMBeanExporterObjectNamingStrategynaming-strategyspring-doc.cn

有关更多信息,请参阅 JMX 支持spring-doc.cn

TCP/IP 连接事件和连接管理

TcpConnection现在,当打开或关闭连接或发生异常时,实例会发出实例(特别是实例)。 此更改允许应用程序使用常规的 Spring 机制通知 TCP 连接的更改。ApplicationEventTcpConnectionEventApplicationListenerspring-doc.cn

我们重命名为 . 作为此类的子类的自定义连接可以使用其方法来发布事件。 同样,我们将 .AbstractTcpConnectionTcpConnectionSupportAbstractTcpConnectionInterceptorTcpConnectionInterceptorSupportspring-doc.cn

此外,我们还添加了 . 默认情况下,此适配器将所有实例发送到 .<int-ip:tcp-connection-event-inbound-channel-adapter/>TcpConnectionEventChannelspring-doc.cn

此外,TCP 连接工厂现在提供了一个名为 的新方法,该方法返回所有打开的连接的标识符列表。 它允许应用程序广播到所有打开的连接,以及其他用途。getOpenConnectionIds()spring-doc.cn

最后,连接工厂还提供了一个名为 的新方法,它允许应用程序使用其 ID 显式关闭连接。closeConnection(String connectionId)spring-doc.cn

入站通道适配器脚本支持

现在支持 using 和 child 元素来创建 . 请参阅通道适配器表达式和脚本<int:inbound-channel-adapter/><expression/><script/>MessageSourcespring-doc.cn

内容扩充器:标头扩充支持

内容扩充器现在为子元素提供配置,以根据来自底层消息流的回复消息使用标头来扩充出站消息。 有关更多信息,请参阅 Payload Enricher<header/>spring-doc.cn

一般更改

本节介绍从版本 2.2 到版本 3.0 的一般更改。spring-doc.cn

消息 ID 生成

以前,消息 ID 是使用 JDK 方法生成的。 在此版本中,默认机制已更改为使用更高效、速度更快的算法。 此外,我们还添加了更改用于生成消息 ID 的策略的功能。 有关更多信息,请参阅消息 ID 生成UUID.randomUUID()spring-doc.cn

“<gateway>” 更改

现在,您可以在所有网关方法中设置通用标头,并且我们添加了更多选项,用于向消息添加有关调用了哪个方法的信息。spring-doc.cn

现在,您可以完全自定义网关方法调用映射到消息的方式。spring-doc.cn

现在是 public 类。 它允许您以编程方式配置 from Java.GatewayMethodMetadataGatewayProxyFactoryBeanspring-doc.cn

有关更多信息,请参阅 Messaging Gatewayspring-doc.cn

HTTP 端点更改
  • 出站终端节点 encode-uri:,现在提供一个属性,以允许在发送请求之前禁用 URI 对象的编码。<http:outbound-gateway/><http:outbound-channel-adapter/>encode-urispring-doc.cn

  • Inbound Endpoint merge-with-default-converters: 现在有一个属性,用于在自定义消息转换器之后包含默认实例列表。<http:inbound-gateway/><http:inbound-channel-adapter/>merge-with-default-convertersHttpMessageConverterspring-doc.cn

  • If-Modified-SinceIf-Unmodified-Since HTTP 标头:以前,在 . 现在,除了纠正该问题外,还为接受日期时间值的任何 HTTP 标头提供从格式化字符串进行日期分析的功能。If-Modified-SinceIf-Unmodified-SinceDefaultHttpHeaderMapperDefaultHttpHeaderMapperspring-doc.cn

  • 入站终端节点表达式变量:除了现有的 和 、 和 现在还支持其他有用的变量:、 、 和 。 这些变量在有效负载和标头表达式中均可用。#requestParams#pathVariables<http:inbound-gateway/><http:inbound-channel-adapter/>#matrixVariables#requestAttributes#requestHeaders#cookiesspring-doc.cn

  • 出站终端节点 'uri-variables-expression':HTTP 出站终端节点现在支持指定属性以评估 URL 模板中的所有 URI 变量占位符。 这允许根据传出消息选择不同的表达式映射。uri-variables-expressionExpressionMapspring-doc.cn

有关更多信息,请参阅 HTTP 支持spring-doc.cn

Jackson 支持 (JSON)
  • 引入了 JSON 转换的新抽象。 目前提供了 Jackson 1.x 和 Jackson 2 的实现,版本由 Classpath 中的存在决定。 以前,仅支持 Jackson 1.x。spring-doc.cn

  • 现在发出/使用包含类型信息的标头。ObjectToJsonTransformerJsonToObjectTransformerspring-doc.cn

有关详细信息,请参阅 Transformer 中的“JSON 转换器”。spring-doc.cn

Chain Elements 属性id

以前,a 中元素的属性被忽略,在某些情况下是不允许的。 现在,该属性允许用于 . 链元素的 bean 名称是周围链和元素本身的 的组合。 例如:'myChain$child.myTransformer.handler'。 有关更多信息,请参阅消息处理程序链id<chain>id<chain>ididspring-doc.cn

聚合器 'empty-group-min-timeout' 属性

它提供了一个新属性,该属性称为允许空组过期按比过期的部分组更长的计划运行。 空组不会从 中删除,直到它们至少在此毫秒数内未被修改。 有关更多信息,请参阅使用 XML 配置聚合器AbstractCorrelatingMessageHandlerempty-group-min-timeoutMessageStorespring-doc.cn

永久文件列表过滤器 (file, (S)FTP)

使用持久化的新实现现已推出。 您可以使用这些来防止在系统重新启动后出现重复文件。 有关更多信息,请参阅读取文件FTP 入站通道适配器SFTP 入站通道适配器FileListFilterMetadataStorespring-doc.cn

脚本支持:变量更改

我们为脚本组件引入了一个新属性。 此外,现在允许内联脚本使用变量绑定。 有关更多信息,请参阅 Groovy 支持脚本支持variablesspring-doc.cn

Direct Channel Load Balancing 配置

以前,在通道的子元素上进行配置时,唯一可用的选项是使用预定义的值枚举,该枚举不允许开发人员设置自定义实现。 现在,您可以使用 来提供对 . 有关更多信息,请参阅 DirectChannelLoadBalancingStrategydispatcherLoadBalancingStrategyload-balancer-refLoadBalancingStrategyspring-doc.cn

PublishSubscribeChannel 行为

以前,发送到没有订阅者的 <publish-subscribe-channel/> 会返回结果。 如果与 a 结合使用,则会导致引发异常。 现在,它有一个名为 (default: ) 的属性。 如果消息至少发送给最小数量的订阅者,则 send 操作被视为成功(即使该数字为零)。 如果应用程序希望在这些情况下收到异常,请将最小订户数设置为至少 1。falseMessagingTemplatePublishSubscribeChannelminSubscribers0spring-doc.cn

FTP、SFTP 和 FTPS 更改

默认情况下,FTP、SFTP 和 FTPS 终端节点不再缓存会话。spring-doc.cn

我们从所有端点中删除了 deprecated 属性。 以前,由此属性的值控制的嵌入式缓存机制不提供限制缓存大小的方法,缓存大小可以无限增长。 版本 2.1 引入了 ,它成为缓存会话的首选(现在是唯一的)方法。cached-sessionsCachingConnectionFactoryspring-doc.cn

CachingConnectionFactory现在提供了一个新方法: . 此方法会立即关闭空闲会话,并导致正在使用的会话在返回到缓存时关闭。resetCache()spring-doc.cn

现在,(与 一起)支持通过单个 SSH 连接(仅限 SFTP)进行多路复用通道。DefaultSftpSessionFactoryCachingSessionFactoryspring-doc.cn

FTP、SFTP 和 FTPS 入站适配器

以前,无法覆盖用于处理从远程服务器检索的文件的默认过滤器。 该属性确定要检索哪些文件,但 使用 . 这意味着,如果使用与以前复制的文件同名检索文件的新副本,则不会从适配器发送任何消息。filterFileReadingMessageSourceAcceptOnceFileListFilterspring-doc.cn

在此版本中,新属性允许您覆盖默认过滤器(例如,使用或其他自定义过滤器)。local-filterAcceptAllFileListFilterspring-doc.cn

如果您希望在 JVM 执行之间保持 的行为,您现在可以配置一个自定义过滤器来保留状态,可能在文件系统上。AcceptOnceFileListFilterspring-doc.cn

入站通道适配器现在支持该属性,该属性将本地文件修改的时间戳设置为来自服务器的时间戳(默认值:)。preserve-timestampfalsespring-doc.cn

FTP、SFTP 和 FTPS 网关

网关现在支持该命令,从而启用远程文件的重命名。mvspring-doc.cn

网关现在支持递归和命令,从而支持检索远程文件树。lsmgetspring-doc.cn

网关现在支持 and commands,允许将文件发送到远程服务器。putmputspring-doc.cn

现在支持该属性,从而在检索期间启用本地文件的命名。 默认情况下,使用与远程文件相同的名称。local-filename-generator-expressionspring-doc.cn

现在支持该属性,从而在检索期间(基于远程目录)启用本地目录的命名。local-directory-expressionspring-doc.cn

远程文件模板

在 FTP 和 SFTP 模块使用的实现上提供了新的更高级别的抽象 ()。 虽然它由终端节点在内部使用,但您也可以以编程方式使用此抽象。 像所有 Spring 实现一样,它可靠地关闭底层 session,同时允许对 session 进行低级访问。RemoteFileTemplateSession*Templatespring-doc.cn

有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器spring-doc.cn

出站网关的 'requires-reply' 属性

所有出站网关(例如 or )都是为“请求-回复”场景设计的。 响应应来自外部服务,并发布到 或 消息标头。 但是,在某些情况下,外部系统可能并不总是返回结果(例如, a 当 SELECT 以空或单向 Web 服务结尾时)。 因此,开发人员需要一个选项来配置是否需要回复。 为此,我们引入了出站网关组件的属性。 在大多数情况下,的默认值为 。 如果没有结果,则抛出 a。 将该值更改为意味着,如果外部服务未返回任何内容,则消息流将在该点结束,类似于出站通道适配器。<jdbc:outbound-gateway/><jms:outbound-gateway/>reply-channelreplyChannel<jdbc:outbound-gateway/>ResultSetrequires-replyrequires-replytrueReplyRequiredExceptionfalsespring-doc.cn

WebService 出站网关具有一个名为 的附加属性。 它用于将空响应视为未收到响应。 默认情况下,它是 ,但您可以将其设置为允许应用程序在回复消息负载中接收空。 当 attribute 为 时,空字符串将被视为 no response for the attribute 。 默认情况下,对于 WebService 出站网关,为 false。ignore-empty-responsesStringtruefalseStringtruerequires-replyrequires-reply

请注意,该属性以前存在,但在 中设置为 ,并且无法使用 XML 命名空间在出站网关上配置它。requiresReplyfalseAbstractReplyProducingMessageHandlerspring-doc.cn

以前,未收到回复的网关将静默结束流(带有 DEBUG 日志消息)。 默认情况下,通过此更改,大多数网关现在都会引发异常。 要恢复到之前的行为,请设置为 。requires-replyfalse
AMQP 出站网关标头映射

以前,<int-amqp:outbound-gateway/> 在调用消息转换器之前映射了标头,并且转换器可以覆盖诸如 . 出站适配器在转换后映射 headers,这意味着使用来自 outbound (如果存在) 的 headers。content-typecontent-typeMessagespring-doc.cn

从此版本开始,网关现在在消息转换后映射标头,与适配器一致。 如果您的应用程序依赖于以前的行为(其中转换器的 Headers 覆盖了映射的 Headers),则需要筛选这些 Headers(在消息到达网关之前)或适当地设置它们。 受 are 和 影响的标头。 自定义消息转换器可以设置其他标头。SimpleMessageConvertercontent-typecontent-encodingspring-doc.cn

存储过程组件改进

对于标准方法不支持的更复杂的数据库特定类型,我们使用 OUT-direction 为元素引入了两个新的附加属性:CallableStatement.getObject<sql-parameter-definition/>spring-doc.cn

存储过程入站通道适配器子元素的属性现在支持对 Bean 定义的引用。 以前,它仅包含类名(仍受支持)。row-mapper<returning-resultset/>RowMapperspring-doc.cn

有关详细信息,请参阅存储过程spring-doc.cn

Web 服务出站 URI 配置

Web 服务出站网关“uri”属性现在支持替换 Spring Web 服务支持的所有 URI 方案。 有关更多信息,请参阅出站 URI 配置<uri-variable/>spring-doc.cn

Redis 适配器更改

Redis 入站通道适配器现在可以使用属性的值,原始数据是消息负载。nullserializerspring-doc.cn

Redis 出站通道适配器现在具有用于确定运行时的 Redis 主题的属性。topic-expressionMessagespring-doc.cn

Redis 入站通道适配器除了 existing 属性外,现在还具有该属性。topicstopic-patternsspring-doc.cn

有关更多信息,请参阅 Redis 支持spring-doc.cn

Advising Filters

以前,当 a 具有 时,丢弃操作全部在通知链的范围内执行(包括 上的任何下游流)。 filter 元素现在具有一个名为 (default: ) 的属性,以允许在通知链完成后执行 discard 操作。 请参阅 Advice Filters<filter/><request-handler-advice-chain/>discard-channeldiscard-within-advicetruespring-doc.cn

使用注释为终端节点提供建议

现在可以使用 annotation 配置请求处理程序通知链。 请参阅使用注释通知终端节点spring-doc.cn

ObjectToStringTransformer 改进

此转换器现在可以正确地转换和有效负载。 有关更多信息,请参阅 Transformerbyte[]char[]Stringspring-doc.cn

JPA 支持更改

要保留或合并的有效负载现在可以是 类型。java.lang.Iterablespring-doc.cn

在这种情况下,返回的每个对象都被视为一个实体,并使用基础 . 迭代器返回的 Null 值将被忽略。IterableEntityManagerspring-doc.cn

JPA 适配器现在具有其他属性,可以在执行持久性操作后选择性地从关联的持久性上下文中刷新和清除实体。spring-doc.cn

检索网关没有指定要检索的第一条记录的机制,这是一种常见的使用案例。 检索网关现在支持通过向网关定义添加 and 属性来指定此参数。 有关更多信息,请参阅检索出站网关first-resultfirst-result-expressionspring-doc.cn

JPA 检索网关和入站适配器现在具有一个属性,用于以表达式的形式指定结果集中的最大结果数。 此外,我们还引入了 replace 属性,该属性已弃用。 和 用于提供最大结果数,或用于分别计算结果集中的最大结果数的表达式。max-resultsmax-number-of-resultsmax-resultsmax-results-expressionspring-doc.cn

有关更多信息,请参阅 JPA 支持spring-doc.cn

延时器:延迟表达式

以前,它提供了一个属性来确定运行时的延迟值。 在复杂情况下,the 前面必须有 . Spring Integration 3.0 引入了用于动态延迟确定的属性和子元素。 该属性现已弃用,因为您可以在 . 此外,我们还引入了 来控制表达式计算失败时的行为。 有关更多信息,请参阅延迟器<delayer>delay-header-name<delayer><header-enricher>expressionexpressiondelay-header-nameexpressionignore-expression-failuresspring-doc.cn

JDBC 消息存储改进

Spring 集成 3.0 为 MySQL 版本 5.6.4 及更高版本添加了一组新的 DDL 脚本。 现在 MySQL 支持小数秒,因此在从基于 MySQL 的消息存储轮询时改进了 FIFO 排序。 有关更多信息,请参阅通用 JDBC 消息存储spring-doc.cn

IMAP 空闲连接异常

以前,如果 IMAP 空闲连接失败,则会记录该连接,但没有通知应用程序的机制。 此类异常现在会生成实例。 应用程序可以通过使用配置为接收 (或其超类之一) 的 或 any 来获取这些事件。ApplicationEvent<int-event:inbound-channel-adapter>ApplicationListenerImapIdleExceptionEventspring-doc.cn

消息标头和 TCP

TCP 连接工厂现在支持配置灵活的机制,以通过 TCP 传输选定的标头(以及有效负载)。 new 启用标头的选择,您需要配置适当的序列化程序或反序列化程序以将结果写入 TCP 流。 我们添加了一个方便的机制,用于通过 TCP 传输标头和有效负载。 有关更多信息,请参阅传输标头TcpMessageMapperMapMapJsonSerializerspring-doc.cn

JMS 消息驱动通道适配器

以前,在配置 时,如果您希望使用特定的 ,则必须声明一个容器 Bean 并通过设置属性将其提供给适配器。 我们添加了 ,让它直接在适配器上设置。 这是对其他几个已可用的容器属性的补充。<message-driven-channel-adapter/>TaskExecutorcontainertask-executorspring-doc.cn

XsltPayloadTransformer

现在,您可以通过设置属性来指定 transformer 工厂类名称。 看。transformer-factory-classXsltPayloadTransformerspring-doc.cn

2.1 和 2.2 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 2.2 添加了许多新组件。spring-doc.cn

RedisStore入站和出站通道适配器

Spring 集成现在具有入站和出站通道适配器,允许您向 Redis 集合写入和读取有效负载。 有关更多信息,请参阅 RedisStore 出站通道适配器和 Redis Store 入站通道适配器RedisStoreMessagespring-doc.cn

MongoDB 入站和出站通道适配器

Spring 集成现在具有 MongoDB 入站和出站通道适配器,允许您向 MongoDB 文档存储写入和读取有效负载。 有关更多信息,请参阅 MongoDB 出站通道适配器MongoDB 入站通道适配器Messagespring-doc.cn

JPA 终端节点

Spring 集成现在包括 Java 持久性 API (JPA) 的组件,用于检索和持久化 JPA 实体对象。 JPA 适配器包括以下组件:spring-doc.cn

有关更多信息,请参阅 JPA 支持spring-doc.cn

一般更改

本节介绍从版本 2.1 到版本 2.2 的一般更改。spring-doc.cn

默认使用的 Spring 3.1

Spring 集成现在使用 Spring 3.1。spring-doc.cn

向终端节点添加行为

向 poller 添加 an 的功能已经存在了一段时间。 但是,由此添加的行为会影响整个集成流程。 它没有解决向单个终端节点添加(例如)重试的功能。 2.2 版本引入了许多终端节点。<advice-chain/><request-handler-advice-chain/>spring-doc.cn

此外,为此,我们添加了三个标准建议类:spring-doc.cn

有关更多信息,请参阅向终端节点添加行为spring-doc.cn

事务同步和伪事务

Poller 现在可以参与 Spring 的 Transaction Synchronization 功能。 这允许同步诸如通过入站通道适配器重命名文件之类的操作,具体取决于事务是提交还是回滚。spring-doc.cn

此外,您可以在不存在 “真实” 交易时通过 .PseudoTransactionManagerspring-doc.cn

有关更多信息,请参阅事务同步spring-doc.cn

文件适配器:改进的文件覆盖和附加处理

使用文件出站通道适配器或文件出站网关时,可以使用新属性。 在 Spring Integration 2.2 之前,目标文件在存在时被替换。 现在,您可以指定以下选项:modespring-doc.cn

有关更多信息,请参阅处理现有目标文件spring-doc.cn

已将 reply-timeout 添加到更多出站网关

XML Namespace 支持将 reply-timeout 属性添加到以下出站网关:spring-doc.cn

弹簧-AMQP 1.1

Spring 集成现在使用 Spring AMQP 1.1。 这使得可以在 Spring 集成应用程序中使用多个功能,包括以下内容:spring-doc.cn

JDBC 支持 - 存储过程组件
SPEL 支持

使用 Spring 集成 JDBC 适配器的存储过程组件时,您现在可以使用 Spring 表达式语言 (SpEL) 提供存储过程名称或存储函数名称。spring-doc.cn

这样做可以指定要在运行时调用的存储过程。 例如,您可以提供要通过消息标头执行的存储过程名称。 有关详细信息,请参阅存储过程spring-doc.cn

JMX 支持

存储过程组件现在提供基本的 JMX 支持,将其一些属性公开为 MBean:spring-doc.cn

JDBC 支持:出站网关

当您使用 JDBC 出站网关时,更新查询不再是必需的。 现在,您可以通过使用请求消息作为参数源来仅提供 select 查询。spring-doc.cn

JDBC 支持:特定于通道的消息存储实现

我们添加了一个新的特定于消息通道的消息存储实现,使用特定于数据库的 SQL 查询提供更具可扩展性的解决方案。 有关更多信息,请参阅支持消息通道spring-doc.cn

有序关机

我们添加了一个名为 . 它允许以有序的方式关闭 Spring 集成应用程序,不允许新的入站消息发送到某些适配器,并等待一段时间以允许正在进行的消息完成。stopActiveComponents()IntegrationMBeanExporterspring-doc.cn

JMS 出站网关改进

您现在可以将 JMS 出站网关配置为使用容器来接收回复。 这样做可以提高网关的性能。MessageListenerspring-doc.cn

ObjectToJsonTransformer

默认情况下,现在将标头设置为 . 有关更多信息,请参阅 TransformerObjectToJsonTransformercontent-typeapplication/jsonspring-doc.cn

HTTP 支持

默认情况下,不再启用基于 HTTP 的 Java 序列化。 以前,在对象上设置 an 时,标题未正确设置。 我们更新了 以将标头设置为 . 但是,由于这可能会导致与现有应用程序不兼容,因此我们决定不再自动将此转换器添加到 HTTP 端点。expected-response-typeSerializableAcceptSerializingHttpMessageConverterAcceptapplication/x-java-serialized-objectspring-doc.cn

如果您希望使用 Java 序列化,则需要使用 attribute (当您使用 XML configuration 时) 或使用 method (在 Java 中) 将 the 添加到相应的端点。SerializingHttpMessageConvertermessage-converterssetMessageConverters()spring-doc.cn

或者,您可能希望考虑改用 JSON。 它是通过在 Classpath 上启用的。Jacksonspring-doc.cn

2.0 和 2.1 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。spring-doc.cn

新组件

版本 2.1 添加了许多新组件。spring-doc.cn

JSR-223 脚本支持

在 Spring Integration 2.0 中,我们添加了对 Groovy 的支持。 在 Spring Integration 2.1 中,我们通过实现对 JSR-223(“Java™ 平台脚本”)的支持,大大扩展了对其他语言的支持。 现在,您可以使用任何支持 JSR-223 的脚本语言,包括:spring-doc.cn

有关更多详细信息,请参阅脚本支持spring-doc.cn

AMQP 支持

Spring Integration 2.1 添加了几个通道适配器,用于使用高级消息队列协议 (AMQP) 接收和发送消息。 此外, Spring 集成还提供了一个点对点的消息通道和一个发布-订阅消息通道,这两者都由 AMQP 交换和队列支持。spring-doc.cn

有关更多详细信息,请参阅 AMQP 支持spring-doc.cn

MongoDB 支持

从版本 2.1 开始, Spring 集成通过提供基于 MongoDB 的 .MessageStorespring-doc.cn

有关更多详细信息,请参阅 MongoDb 支持spring-doc.cn

Redis 支持

从版本 2.1 开始, Spring 集成通过提供基于 Redis 的发布-订阅消息传递适配器来支持 Redis,这是一种高级键值存储。MessageStorespring-doc.cn

有关更多详细信息,请参阅 Redis 支持spring-doc.cn

支持 Spring 的 Resource 抽象

在版本 2.1 中,我们引入了一个新的资源入站通道适配器,它建立在 Spring 的资源抽象之上,以支持各种实际类型的底层资源(例如文件、URL 或 Classpath 资源)的更大灵活性。 因此,它与文件入站通道适配器类似,但比文件入站通道适配器更通用。spring-doc.cn

有关更多详细信息,请参阅 Resource Inbound Channel Adapterspring-doc.cn

存储过程组件

在 Spring Integration 2.1 中,该模块还通过添加几个新组件(包括入站和出站通道适配器以及出站网关)来提供存储过程支持。 存储过程支持利用了 Spring 的 SimpleJdbcCall 类,因此支持以下存储过程:JDBCspring-doc.cn

存储过程组件还支持以下数据库的 SQL 函数:spring-doc.cn

有关详细信息,请参阅存储过程spring-doc.cn

XPath 和 XML 验证过滤器

Spring 集成 2.1 提供了一个基于 XPath 的新消息过滤器。 它是模块的一部分。 XPath 筛选器允许您使用 XPath 表达式筛选消息。 我们还添加了 XML 验证筛选器的文档。XMLspring-doc.cn

有关更多详细信息,请参阅使用 XPath 筛选器XML 验证筛选器spring-doc.cn

Payload Enricher

从 Spring Integration 2.1 开始,我们添加了有效负载丰富器。 有效负载扩充器定义一个终端节点,该终端节点通常将 Message 传递给公开的请求通道,然后需要回复消息。 然后,回复消息成为用于评估表达式以丰富目标负载的根对象。spring-doc.cn

有关更多详细信息,请参阅 Payload Enricherspring-doc.cn

FTP 和 SFTP 出站网关

Spring 集成 2.1 提供了两个新的出站网关,用于与远程文件传输协议 (FTP) 或安全文件传输协议 (SFT) 服务器进行交互。 这两个网关允许您直接执行一组有限的远程命令。spring-doc.cn

例如,你可以使用这些出站网关来列出、检索和删除远程文件,并让 Spring 集成消息流继续处理远程服务器的响应。spring-doc.cn

有关更多详细信息,请参阅 FTP 出站网关SFTP 出站网关spring-doc.cn

FTP 会话缓存

从版本 2.1 开始,我们在远程文件适配器(例如 FTP、SFTP 等)的会话管理方面提供了更大的灵活性。spring-doc.cn

具体来说,我们弃用了该属性(可通过 XML 命名空间支持获得)。 作为替代方法,我们在 .cache-sessionssessionCacheSizesessionWaitTimeoutCachingSessionFactoryspring-doc.cn

有关更多详细信息,请参阅 FTP 会话缓存和 SFTP 会话缓存spring-doc.cn

框架重构

我们以多种方式重构了 Spring 集成框架,本节将对此进行介绍。spring-doc.cn

标准化路由器配置

我们使用 Spring Integration 2.1 对所有路由器实现中的路由器参数进行了标准化,以提供更一致的用户体验。spring-doc.cn

在 Spring Integration 2.1 中,我们删除了该属性,以便将其行为与该属性合并。 此外,该属性现在默认为 .ignore-channel-name-resolution-failuresresolution-requiredresolution-requiredtruespring-doc.cn

从 Spring Integration 2.1 开始,如果未定义默认输出通道,路由器不再静默丢弃任何消息。 这意味着,默认情况下,路由器现在至少需要一个已解析的通道(如果未设置),默认情况下,如果未确定通道(或发送尝试不成功),则抛出一个。default-output-channelMessageDeliveryExceptionspring-doc.cn

但是,如果您确实希望以静默方式放置消息,则可以设置 .default-output-channel="nullChannel"spring-doc.cn

随着路由器参数的标准化和前面描述的参数的整合,较旧的基于 Spring 集成的应用程序可能会中断。

有关更多详细信息,请参阅。Routersspring-doc.cn

XML 架构已更新到 2.1

Spring Integration 2.1 附带了更新的 XML Schema(版本 2.1)。 它提供了许多改进,例如前面讨论的 Router 标准化。spring-doc.cn

从现在开始,开发人员必须始终声明最新的 XML 架构(当前版本 2.1)。 或者,他们可以使用无版本架构。 通常,最好的选择是使用无版本的名称空间,因为它们会自动使用 Spring Integration 的最新可用版本。spring-doc.cn

下面的示例声明了一个无版本的 Spring 集成名称空间:spring-doc.cn

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xsi:schemaLocation="http://www.springframework.org/schema/integration
           https://www.springframework.org/schema/integration/spring-integration.xsd
           http://www.springframework.org/schema/beans
           https://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>

下面的示例声明了一个具有显式版本的 Spring 集成名称空间:spring-doc.cn

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xsi:schemaLocation="http://www.springframework.org/schema/integration
           https://www.springframework.org/schema/integration/spring-integration-2.2.xsd
           http://www.springframework.org/schema/beans
           https://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>

旧的 1.0 和 2.0 架构仍然存在。 但是,如果应用程序上下文仍引用这些已弃用的架构之一,则验证程序将在初始化时失败。spring-doc.cn

源代码控制管理和构建基础设施

版本 2.1 引入了对源代码控制管理和构建基础设施的许多更改。 本节介绍这些更改。spring-doc.cn

源代码现在托管在 Github 上

从 2.0 版本开始,Spring 集成项目使用 Git 进行版本控制。 为了进一步提高社区的知名度,该项目从 SpringSource 托管的 Git 存储库转移到了 Github。 Spring 集成 Git 存储库位于:spring-integrationspring-doc.cn

对于该项目,我们还改进了提供代码贡献的流程。 此外,我们确保每个提交都经过同行评审。 事实上,核心提交者现在遵循与贡献者相同的流程。 有关更多详细信息,请参阅 贡献spring-doc.cn

使用 Sonar 提高源代码可见性

为了提供更好的源代码可见性,从而监控 Spring 集成源代码的质量,我们设置了一个 Sonar 实例。 我们每晚收集指标,并在 sonar.spring.io 上提供这些指标。spring-doc.cn

新样本

对于 Spring Integration 的 2.1 版本,我们还扩展了 Spring Integration Samples 项目并添加了许多新示例,例如涵盖 AMQP 支持的示例、展示新有效负载丰富器的示例、说明用于测试 Spring Integration 流片段的技术的示例,以及针对 Oracle 数据库执行存储过程的示例。 有关详细信息,请访问 spring-integration-samplesspring-doc.cn

版本 1.0 和 2.0 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。spring-doc.cn

Spring 3 支持

Spring Integration 2.0 构建在 Spring 3.0.5 之上,并为我们的用户提供了它的许多功能。spring-doc.cn

[[2.0-spel-支持]] ===== 对 Spring 表达式语言 (SpEL) 的支持spring-doc.cn

现在,你可以在transformer、router、filter、splitter、aggregator、service-activator、header-enricher以及Spring Integration核心命名空间的更多元素以及各种适配器中使用 SPEL 表达式。 本指南包含许多示例。spring-doc.cn

转换服务和转换器

现在,您可以在配置许多 Spring 集成组件(例如 Datatype 通道)时从 Spring 提供的转换服务支持中受益。 请参阅 Message Channel 实现 和 Service Activator。 此外,上一点中提到的 SPEL 支持也依赖于转换服务。 因此,您可以注册一次转换器,并在使用 SpEL 表达式的任何地方利用它们。spring-doc.cn

TaskSchedulerTrigger

Spring 3.0 定义了两个与调度相关的新策略: 和 . Spring 集成(使用大量调度)现在建立在这些基础上。 事实上, Spring Integration 1.0 最初定义了一些组件(例如 ),这些组件现在已经迁移到 Spring 3.0 的核心 API 中。 现在,你可以从整个应用程序上下文中重用相同的组件中受益(不仅仅是 Spring 集成配置)。 我们还通过提供用于直接配置速率、延迟、cron 表达式和触发器引用的属性,大大简化了 Spring 集成 Poller 的配置。 有关示例配置,请参阅 Channel AdapterTaskSchedulerTriggerCronTriggerspring-doc.cn

RestTemplateHttpMessageConverter

我们的出站 HTTP 适配器现在委托给 Spring 来执行 HTTP 请求并处理其响应。 这也意味着您可以重用任何自定义实现。 有关更多详细信息,请参阅 HTTP 出站组件RestTemplateHttpMessageConverterspring-doc.cn

企业集成模式添加

同样在 2.0 中,我们添加了对 Hohpe 和 Woolf 的 Enterprise Integration Patterns 一书中描述的更多模式的支持。spring-doc.cn

消息历史记录

我们现在提供对消息历史记录模式的支持,让您跟踪所有遍历的组件,包括每个通道和终端节点的名称以及该遍历的时间戳。 有关更多详细信息,请参阅消息历史记录spring-doc.cn

消息存储

我们现在提供对消息存储模式的支持。 消息存储提供了一种策略,用于代表范围超出单个事务的任何进程(例如聚合器和 resequencer)保留消息。 本指南的许多部分都包含如何使用消息存储的示例,因为它会影响 Spring 集成的多个领域。 有关更多详细信息,请参阅 Message StoreClaim CheckMessage ChannelsAggregatorJDBC Support'“ 和 Resequencerspring-doc.cn

索赔检查

我们添加了索赔检查模式的实现。 声明检查模式背后的想法是,您可以将消息负载交换为“声明票证”。 这样,您就可以在跨通道发送消息时减少带宽并避免潜在的安全问题。 有关更多详细信息,请参阅索赔检查spring-doc.cn

控制总线

我们提供了控制总线模式的实现,它允许您使用消息传递来管理和监控端点和通道。 这些实现包括基于 SPEL 的方法和运行 Groovy 脚本的方法。 有关更多详细信息,请参阅 Control BusControl Busspring-doc.cn

新的通道适配器和网关

我们在 Spring Integration 2.0 中添加了几个新的通道适配器和消息传递网关。spring-doc.cn

TCP 和 UDP 适配器

我们添加了通道适配器,用于通过 TCP 和 UDP Internet 协议接收和发送消息。 有关更多详细信息,请参阅 TCP 和 UDP 支持。 另请参见以下博客:“在 Spring Integration 2.0 M3 中使用 UDP 和 TCP 适配器”。spring-doc.cn

Twitter 适配器

Twitter 适配器支持发送和接收 Twitter 状态更新以及私信。 您还可以使用入站渠道适配器执行 Twitter 搜索。 有关更多详细信息,请参阅 Spring Integration Social Twitterspring-doc.cn

XMPP 适配器

新的 XMPP 适配器同时支持聊天消息和在线状态事件。 有关更多详细信息,请参阅 XMPP 支持spring-doc.cn

FTP 和 FTPS 适配器

现在提供通过 FTP 和 FTPS 的入站和出站文件传输支持。 有关详细信息,请参阅 FTP/FTPS 适配器spring-doc.cn

SFTP 适配器

现在提供通过 SFTP 的入站和出站文件传输支持。 有关更多详细信息,请参阅 SFTP 适配器spring-doc.cn

Feed 适配器

我们还添加了用于接收新闻源(ATOM 和 RSS)的通道适配器。 有关更多详细信息,请参阅 Feed Adapterspring-doc.cn

其他新增内容

Spring 集成添加了许多其他功能。 本节将介绍它们。spring-doc.cn

Groovy 支持

Spring Integration 2.0 添加了 Groovy 支持,允许您使用 Groovy 脚本语言来提供集成和业务逻辑。 有关更多详细信息,请参阅 Groovy 支持spring-doc.cn

映射转换器

这些对称转换器将有效负载对象与对象相互转换。 有关更多详细信息,请参阅 TransformerMapspring-doc.cn

JSON 转换器

这些对称转换器将有效负载对象与 JSON 相互转换。 有关更多详细信息,请参阅 Transformerspring-doc.cn

序列化转换器

这些对称转换器将有效负载对象与字节数组相互转换。 它们还支持 Spring 3.0.5 添加的 serializer 和 deserializer 策略接口。 有关更多详细信息,请参阅 Transformerspring-doc.cn

框架重构

核心 API 经过了一些重大的重构,使其更简单、更可用。 尽管我们预计对开发人员的影响应该很小,但您应该通读本文档以了解更改的内容。 具体来说,您应该阅读 Dynamic RoutersMessaging GatewaysHTTP Outbound ComponentsMessageAggregator。 如果您直接依赖某些核心组件(、、、 和其他组件),则需要更新任何 import 语句。 我们重组了一些打包,以提供扩展领域模型所需的灵活性,同时避免任何循环依赖(这是框架的政策,以避免这种 “纠结”)。MessageMessageHeadersMessageChannelMessageBuilderspring-doc.cn

新的源代码控制管理和构建基础设施

在 Spring Integration 2.0 中,我们将构建环境切换为使用 Git 进行源代码控制。 要访问我们的存储库,请访问 https://git.springsource.org/spring-integration。 我们还将构建系统切换到了 Gradlespring-doc.cn

新的 Spring 集成示例

在 Spring Integration 2.0 中,我们已经将示例与主要版本发行版解耦。 请阅读以下博客以获取更多信息:新的 Spring 集成示例。 我们还创建了许多新示例,包括每个新适配器的示例。spring-doc.cn

用于 Spring 集成的 Spring Tool Suite 可视化编辑器

在最新版本的 SpringSource Tool Suite 中,包含一个令人惊叹的 Spring Integration 新可视化编辑器。 如果您还没有使用 STS,则可以在 Spring Tool Suite 中下载它。spring-doc.cn