更改历史

变更历史

5.4 与 5.5 版本之间的变更

新组件

文件聚合器

作为FileAggregator组件引入了CorrelationStrategyReleaseStrategyMessageGroupProcessor的基于FileSplitter.FileMaker的实现。 有关更多信息,请参阅文件聚合器spring-doc.cadn.net.cn

MQTT v5 支持

The Mqttv5PahoMessageDrivenChannelAdapter and Mqttv5PahoMessageHandler(包括各自的 MqttHeaderMapper)被引入以支持 MQTT v5 协议通信。 有关更多信息,请参阅 MQTT v5 支持spring-doc.cadn.net.cn

常规变更

所有持久化 MessageGroupStore 实现均基于目标数据库流式 API 提供 streamMessagesForGroup(Object groupId) 契约。 有关更多信息,请参阅 消息存储spring-doc.cadn.net.cn

The integrationGlobalProperties bean(如果已声明)现在必须是 org.springframework.integration.context.IntegrationProperties 的实例,而不是 java.util.Properties,后者为向后兼容性支持已被弃用。 添加了 spring.integration.channels.error.requireSubscribers=true 全局属性,以指示必须使用 requireSubscribers 选项(或不使用)配置全局默认值 errorChannel。 添加了 spring.integration.channels.error.ignoreFailures=true 全局属性,以指示全局默认值 errorChannel 必须忽略(或不忽略)错误分发并将消息传递给下一个处理器。 有关更多信息,请参阅 全局属性spring-doc.cadn.net.cn

一个 AbstractPollingEndpoint(源轮询通道适配器和轮询消费者)会将 maxMessagesPerPoll == 0 视为跳过调用源。 它稍后可更改为不同的值,例如通过控制总线(Control Bus)。 有关更多信息,请参阅 轮询消费者spring-doc.cadn.net.cn

The ConsumerEndpointFactoryBean now accept a reactiveCustomizer Function to any input channel as reactive stream source and use a ReactiveStreamsConsumer underneath. This is covered as a ConsumerEndpointSpec.reactive() option in Java DSL and as a @Reactive nested annotation for the messaging annotations. See Reactive Streams Support for more information.spring-doc.cadn.net.cn

对于关联消息处理器(一个 AggregatorResequencer)的 groupTimeoutExpression 现在可以评估为 java.util.Date,以适用于某些细粒度的调度用例。 此外,AbstractCorrelatingMessageHandler 中新增了 BiFunction groupConditionSupplier 选项,用于向要添加到分组的消息提供一个 MessageGroup 条件。 有关更多信息,请参阅 聚合器spring-doc.cadn.net.cn

MessageGroup抽象可以被提供一个condition,以便稍后评估以做出针对该组的决策。 有关更多信息,请参阅消息组条件spring-doc.cadn.net.cn

集成流组合

新的 IntegrationFlows.from(IntegrationFlow) 工厂方法已添加,允许从现有流程的输出启动当前 IntegrationFlow。 此外,IntegrationFlowDefinition 还添加了一个 to(IntegrationFlow) 终端操作符,以便在其他流程的输入通道处继续当前流程。 有关更多信息,请参阅 集成流组合spring-doc.cadn.net.cn

AMQP 变更

The AmqpInboundChannelAdapterAmqpInboundGateway(以及相应的 Java DSL 构建器)现在支持作为 AMQP 特定替代方案的 org.springframework.amqp.rabbit.retry.MessageRecoverer,以取代通用的 RecoveryCallback。 有关更多信息,请参见 AMQP 支持spring-doc.cadn.net.cn

Redis 变更

The ReactiveRedisStreamMessageProducer 现在为所有 StreamReceiver.StreamReceiverOptionsBuilder 选项提供了 setter,包括一个 onErrorResume 函数。 查看 Redis 支持 以获取更多信息。spring-doc.cadn.net.cn

HTTP 变更

The HttpRequestExecutingMessageHandler不再回退到application/x-java-serialized-object内容类型,而是让RestTemplate根据提供的HttpMessageConverter对请求体转换做出最终决定。 它还现在有一个extractResponseBody标志(默认为true),用于仅返回响应体,或无论提供的expectedResponseType如何,都将整个ResponseEntity作为回复消息负载返回。 WebFluxRequestExecutingMessageHandler也提供了相同的选项。 有关更多信息,请参阅HTTP支持spring-doc.cadn.net.cn

文件/FTP/SFTP 变更

持久化文件列表过滤器现在有一个布尔属性 forRecursion。 将此属性设置为 true,也会设置 alwaysAcceptDirectories,这意味着对外部网关(lsmget)的递归操作现在将每次遍历完整的目录树。 这是为了解决目录树深处更改未被检测到的问题。 此外,forRecursion=true 会导致使用文件的完整路径作为元数据存储键;这解决了如果同一名称的文件出现在不同目录中多次时过滤器无法正常工作的问题。 重要提示:这意味着持久化元数据存储中的现有键将无法在顶层目录下的文件中找到。 因此,该属性默认值为 false;此行为可能在未来的版本中发生变化。spring-doc.cadn.net.cn

The FileInboundChannelAdapterSpec 现在拥有一个便捷的 recursive(boolean) 选项,而无需显式引用 RecursiveDirectoryScannerspring-doc.cadn.net.cn

The remoteDirectoryExpression can now be used in the mv command for convenience.spring-doc.cadn.net.cn

MongoDB 变更

The MongoDbMessageSourceSpec was added into MongoDd Java DSL. An update option is now exposed on both the MongoDbMessageSource and ReactiveMongoDbMessageSource implementations.spring-doc.cadn.net.cn

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

WebSockets 变更

基于 ServerWebSocketContainer 的 WebSocket 通道适配器现在可以在运行时进行注册和移除。spring-doc.cadn.net.cn

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

JPA 变更

The JpaOutboundGateway now supports an Iterable message payload for a PersistMode.DELETE.spring-doc.cadn.net.cn

有关更多信息,请参阅出站通道适配器spring-doc.cadn.net.cn

网关变更

以前,在使用 XML 配置时,@Gateway.payloadExpression 会被忽略,不适用于无参方法。 存在一个可能的破坏性变更——如果方法同时被 @Payload@Gateway(带有不同的表达式)注解,之前会应用 @Payload,现在则应用 @Gateway.payloadExpression。 有关更多信息,请参阅 使用注解和 XML 的网关配置 以及 调用无参方法spring-doc.cadn.net.cn

5.3 与 5.4 之间的变更

新组件

Apache Kafka 的通道适配器

独立的 Spring Integration for Apache Kafka 项目已合并为本项目的 spring-integration-kafka 模块。spring-doc.cadn.net.cn

The KafkaProducerMessageHandler sendTimeoutExpression 默认值已更改。spring-doc.cadn.net.cn

您现在可以访问用于底层 send() 操作的 Future<?>spring-doc.cadn.net.cn

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

R2DBC 通道适配器

R2DBC 数据库交互的通道适配器已引入。 有关更多信息,请参阅 R2DBC 支持spring-doc.cadn.net.cn

Redis Stream 支持

Redis Stream 的 Channel Adapters 支持已引入。 有关更多信息,请参阅 Redis Stream 出站 Channel Adapterspring-doc.cadn.net.cn

可续期锁注册表

已引入可续租的锁注册表,以支持分布式锁的租约续期。 有关更多信息,请参阅 JDBC 实现spring-doc.cadn.net.cn

零消息支持

ZeroMqChannel, ZeroMqMessageHandler and ZeroMqMessageProducer 已介绍。 有关更多信息,请参阅 ZeroMQ 支持spring-doc.cadn.net.cn

常规变更

单向消息网关(即void方法返回类型)现在会显式地将nullChannel设置到replyChannel头中,以忽略任何可能的下游回复。 有关更多信息,请参阅设置默认回复通道spring-doc.cadn.net.cn

此外,网关方法调用器(GatewayProxyFactoryBean.MethodInvocationGateway)现在以网关代理 Bean 名称与方法签名的组合形式提供管理的 Bean 名称。 例如:sampleGateway#echo(String)。 这会影响为网关方法调用暴露的消息历史和指标,并在应用上下文启动和关闭期间提供更细粒度的日志记录。spring-doc.cadn.net.cn

聚合器(和重排序器)现在可以过期孤儿组(在持久化存储中,应用程序重启后不再有新消息到达的组)。 有关更多信息,请参阅 聚合器过期组spring-doc.cadn.net.cn

已被 Micrometer 指标替换的传统指标已移除。spring-doc.cadn.net.cn

The 线程屏障 现在有两个独立的超时选项:requestTimeouttriggerTimeoutspring-doc.cadn.net.cn

TCP/UDP 变更

连接工厂现在支持多个发送组件(TcpSender);它们仍然限制为仅一个接收组件(TcpListener)。 这使得例如入站网关和出站通道适配器可以共享同一个工厂,同时支持请求/响应以及从服务器到客户端的任意消息传递。 除非使用单次连接或 ThreadAffinityClientConnectionFactory,否则不应将共享工厂与出站网关一起使用。 有关更多信息,请参阅协作通道适配器TCP 网关spring-doc.cadn.net.cn

UDP 通道适配器现在可以使用SocketCustomizer进行配置,从而允许设置适配器未直接支持的套接字属性。 有关更多信息,请参阅UDP 适配器spring-doc.cadn.net.cn

AMQP 变更

出站端点现在有了处理发布者确认和返回的新机制。 有关更多信息,请参阅发布者确认和返回的替代机制spring-doc.cadn.net.cn

一个新的 BatchMode.EXTRACT_PAYLOAD_WITH_HEADERSAmqpInboundChannelAdapter 支持。 有关更多信息,请参阅 入站通道适配器spring-doc.cadn.net.cn

邮件变更

AbstractMailReceiver现在可以原样生成MimeMessage,而无需急切获取其内容。 有关更多信息,请参阅邮件接收通道适配器spring-doc.cadn.net.cn

5.2 与 5.3 之间的变更

新组件

集成模式

IntegrationPattern抽象用于指示Spring Integration组件属于哪个企业集成模式(一个IntegrationPatternType)和类别。 有关此抽象及其用例的更多信息,请参阅其JavaDocs和集成图spring-doc.cadn.net.cn

ReactiveMessageHandler

The ReactiveMessageHandler is now natively supported in the framework. See ReactiveMessageHandler for more information.spring-doc.cadn.net.cn

ReactiveMessageSourceProducer

ReactiveMessageSourceProducerMessageProducerSupport 的响应式实现,用于将提供的 MessageSource 包装为 Flux,以支持按需 receive() 调用。 有关更多信息,请参阅 响应式流支持spring-doc.cadn.net.cn

Java DSL 扩展

引入了一个新的 IntegrationFlowExtension API,允许使用自定义或组合的 EIP 操作符扩展现有的 Java DSL。 此功能也可用于为任何开箱即用的 IntegrationComponentSpec 扩展引入自定义器。 有关更多信息,请参阅 DSL 扩展spring-doc.cadn.net.cn

Kotlin DSL

集成流配置的 Kotlin DSL 已引入。 有关更多信息,请参见 Kotlin DSL 章节spring-doc.cadn.net.cn

响应式请求处理器建议

A ReactiveRequestHandlerAdvice is provided to customize Mono replies from message handlers. See Reactive Advice for more information.spring-doc.cadn.net.cn

消息处理建议适配器

HandleMessageAdviceAdapter 用于包装任何 MethodInterceptor,以便在 MessageHandler.handleMessage() 上应用,而不是采用默认的 AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage() 行为。 有关更多信息,请参阅 处理消息建议spring-doc.cadn.net.cn

MongoDB 响应式通道适配器

The spring-integration-mongodb模块现在为Spring Data中的响应式MongoDB驱动程序支持提供了通道适配器实现。 此外,MongoDbChangeStreamMessageProducer中还存在用于MongoDB更改流支持的响应式实现。 有关更多信息,请参阅MongoDB支持spring-doc.cadn.net.cn

接收消息建议

已引入特殊的 ReceiveMessageAdvice 以精确代理 MessageSource.receive()PollableChannel.receive()。 有关更多信息,请参阅 智能轮询spring-doc.cadn.net.cn

常规变更

网关代理默认不再代理default个方法。 有关更多信息,请参阅调用default方法spring-doc.cadn.net.cn

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

在聚合器中,当MessageGroupProcessor返回Message时,如果sequenceDetails与分组中第一条消息的头部匹配,则对输出消息执行MessageBuilder.popSequenceDetails()操作。 有关更多信息,请参阅聚合器编程模型spring-doc.cadn.net.cn

基于 BroadcastCapableChannelBroadcastPublishSubscribeSpec,Java DSL 中新增了一个 publishSubscribeChannel() 运算符。 当我们为像 SubscribableJmsChannelSubscribableRedisChannel 等由代理支持的通道配置作为发布 - 订阅订阅者的子流程时,这种流畅 API 具有其优势。 有关更多信息,请参阅 子流程支持spring-doc.cadn.net.cn

Spring Integration 中的事务支持现在还包括选项,用于配置当 ReactiveTransactionManagerMessageHandler 实现产生响应式类型作为要发送的负载时,应使用 MessageSource。 有关更多信息,请参见 TransactionInterceptorBuilder。 另请参阅 响应式事务spring-doc.cadn.net.cn

一个新的 intercept() 运算符用于注册 ChannelInterceptor 实例,而无需创建显式通道,现已添加到 Java DSL 中。 有关更多信息,请参阅 Operator intercept()spring-doc.cadn.net.cn

MessageStoreSelector 引入了一种新机制,用于比较旧值和新值。 有关更多信息,请参阅 幂等接收器企业集成模式spring-doc.cadn.net.cn

The MessageProducerSupport 基类现在拥有一个 subscribeToPublisher(Publisher<? extends Message<?>>) API,用于实现通过响应式 Publisher 发射消息的消息驱动生产者端点。 有关更多信息,请参阅 响应式流支持spring-doc.cadn.net.cn

AMQP 变更

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

入站通道适配器现在支持监听容器,其中 consumerBatchEnabled 属性设置为 true。 请参阅 AMQP 入站通道适配器spring-doc.cadn.net.cn

HTTP 变更

encodeUri 属性在 AbstractHttpRequestExecutingMessageHandler 上已被弃用,推荐使用新引入的 encodingMode。 请参见 DefaultUriBuilderFactory.EncodingMode JavaDocs 和 控制 URI 编码 以获取更多信息。 这也影响了 WebFluxRequestExecutingMessageHandler、相应的 Java DSL 和 XML 配置。 相同的选项已添加到 AbstractWebServiceOutboundGateway 中。spring-doc.cadn.net.cn

Web 服务变更

Java DSL 支持已添加到 Web Service 组件中。 encodeUri 属性在 AbstractWebServiceOutboundGateway 上已被弃用,转而使用新引入的 encodingMode - 类似于上述 HTTP 变更。 有关更多信息,请参阅 Web Services Supportspring-doc.cadn.net.cn

TCP 变更

FailoverClientConnectionFactory 默认情况下不再回退,直到当前连接失败。 有关更多信息,请参阅 TCP 故障转移客户端连接工厂spring-doc.cadn.net.cn

The TcpOutboundGateway now supports asynchronous request/reply. See TCP Gateways for more information.spring-doc.cadn.net.cn

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

RSocket 变更

已为RSocketInboundGateway添加了decodeFluxAsUnit选项,其含义是将传入的Flux作为单个单元进行解码,或对其中的每个事件应用解码。 有关更多信息,请参阅RSocket 入站网关spring-doc.cadn.net.cn

Zookeeper 变更

一个 LeaderInitiatorFactoryBean(以及其 XML <int-zk:leader-listener>)提供了一个 candidate 选项,以便更精细地控制 Candidate 配置。 有关更多信息,请参阅 领导事件处理spring-doc.cadn.net.cn

MQTT 变更

入站通道适配器现在可以配置为提供用户控制消息何时被确认为已交付。 有关更多信息,请参阅手动确认spring-doc.cadn.net.cn

出站适配器现在在无法创建连接或连接丢失时会发布MqttConnectionFailedEvent。 此前,只有入站适配器会这样做。 参见MQTT 事件spring-doc.cadn.net.cn

(S)FTP 变更

The FileTransferringMessageHandler (用于 FTP 和 SFTP 等) 除了支持 Filebyte[]StringInputStream 之外,现在还支持 org.springframework.core.io.Resource。 有关更多信息,请参见 SFTP 支持FTP 支持spring-doc.cadn.net.cn

文件更改

The FileSplitter不再需要Jackson处理器(或类似)依赖即可用于markersJson模式。 它使用SimpleJsonSerializer来提供FileSplitter.FileMarker实例的简单字符串表示。 有关更多信息,请参阅FileSplitterspring-doc.cadn.net.cn

5.1 与 5.2 之间的变更

包和类变更

Pausable 已从 o.s.i.endpoint 移至 o.s.i.corespring-doc.cadn.net.cn

行为变更

查看关于此版本行为更改的 迁移指南spring-doc.cadn.net.cn

新组件

RSocket 支持

The spring-integration-rsocket 模块现已提供,包含用于 RSocket 协议支持的通道适配器实现。 有关更多信息,请参阅 RSocket 支持spring-doc.cadn.net.cn

速率限制建议支持

RateLimiterRequestHandlerAdvice 现已可用于限制处理器的请求速率。 有关更多信息,请参阅 速率限制器建议spring-doc.cadn.net.cn

缓存建议支持

The CacheRequestHandlerAdvice now supports caching request results on handlers. See Caching Advice for more information.spring-doc.cadn.net.cn

Kotlin 脚本支持

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

Flux 聚合器支持

FluxAggregatorMessageHandler 现在可用于基于 Project Reactor Flux 操作符对消息逻辑进行分组和窗口化处理。 有关更多信息,请参阅 Flux Aggregatorspring-doc.cadn.net.cn

FTP/SFTP 事件发布者

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

Avro 转换器

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

常规变更

The JsonToObjectTransformer 现在支持泛型,用于指定反序列化的目标对象。 有关更多信息,请参阅 JSON 转换器spring-doc.cadn.net.cn

The splitter now supports a discardChannel configuration option. See Splitter for more information.spring-doc.cadn.net.cn

控制总线现在可以处理 PausableLifecycle 的扩展)操作。 有关更多信息,请参阅 控制总线spring-doc.cadn.net.cn

The Function<MessageGroup, Map<String, Object>> 策略已引入聚合组件,用于合并并计算输出消息的头部信息。 有关更多信息,请参阅 聚合编程模型spring-doc.cadn.net.cn

框架中抛出的所有 MessageHandlingException 异常,现在都包含一个 bean 资源及其来源,以便在涉及最终用户代码的情况下进行配置部分的回溯。 有关更多信息,请参阅 错误处理spring-doc.cadn.net.cn

为了更好的终端用户体验,Java DSL 现在提供了用于通过网关接口启动流程的配置器变体。 有关更多信息,请参阅 IntegrationFlows.from(Class<?> serviceInterface, Consumer<GatewayProxySpec> endpointConfigurer) JavaDocs。 此外,MethodArgsHolder 现在也是 GatewayProxyFactoryBean 中所有表达式的求值上下文的根对象。 #args#method 求值上下文变量现已弃用。 有关更多信息,请参阅 消息网关spring-doc.cadn.net.cn

AMQP 变更

现在可以配置出站端点,如果在超时时间内未收到发布者的确认,则合成"nack"。 有关更多信息,请参阅出站通道适配器spring-doc.cadn.net.cn

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

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

文件更改

一些改进已应用于远程文件的过滤功能。 有关更多信息,请参阅远程持久文件列表过滤器spring-doc.cadn.net.cn

TCP 变更

ByteArrayLengthHeaderSerializer使用的长度标头现在可以包含标头长度以及负载的长度。 有关更多信息,请参阅消息定界(序列化和反序列化)spring-doc.cadn.net.cn

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

出站网关新增了一个属性 closeStreamAfterSend;当与每个请求/回复使用新连接配合时,它会向服务器发送 EOF(文件结束)信号,而不会关闭连接。 这对于那些使用 EOF 来标记消息结束(而非在数据中使用分隔符)的服务器非常有用。 有关更多信息,请参阅 TCP 网关spring-doc.cadn.net.cn

客户端连接工厂现在支持connectTimeout,如果在此时间内未建立连接,则会抛出异常。 有关更多信息,请参阅TCP 连接工厂spring-doc.cadn.net.cn

SoftEndOfStreamException 现在是一个 RuntimeException,而不是扩展 IOExceptionspring-doc.cadn.net.cn

邮件变更

The AbstractMailReceiver 现在具有一个 autoCloseFolder 选项(默认为 true),用于在获取后禁用自动关闭文件夹,但改为填充 IntegrationMessageHeaderAccessor.CLOSEABLE_RESOURCE 头以供下游交互使用。 有关更多信息,请参阅 邮件接收通道适配器spring-doc.cadn.net.cn

HTTP 变更

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

WebFlux 变更

The WebFluxRequestExecutingMessageHandler now supports a Publisher, Resource and MultiValueMap as a request message payload. The WebFluxInboundEndpoint now supports a request payload validation. See WebFlux Support for more information.spring-doc.cadn.net.cn

MongoDB 变更

The MongoDbMessageStore can now be configured with custom converters. See MongoDB Support for more information.spring-doc.cadn.net.cn

路由变更

您现在可以禁用回退到使用通道键作为通道 Bean 名称。 有关更多信息,请参阅 动态路由器spring-doc.cadn.net.cn

FTP/SFTP 变更

The RotatingServerAdvice is decoupled now from the RotationPolicy and its StandardRotationPolicy.spring-doc.cadn.net.cn

远程文件信息(包括主机/端口和目录)现已包含在 AbstractInboundFileSynchronizingMessageSourceAbstractRemoteFileStreamingMessageSource 实现的消息头中。 此外,该信息也已包含在 AbstractRemoteFileOutboundGateway 实现的读操作结果的头信息中。 FTP 出站端点现在支持使用 chmod 来更改上传文件的权限。 (SFTP 自 4.3 版本起已支持此功能)。 有关更多信息,请参阅 FTP(S) 支持SFTP 支持spring-doc.cadn.net.cn

5.0 与 5.1 之间的变更

新组件

以下组件是 5.1 版本新增的:spring-doc.cadn.net.cn

AmqpDedicatedChannelAdvice
增强的函数支持

The java.util.function interfaces now have improved integration support in the Framework components. Also Kotlin lambdas now can be used for handler and source methods.spring-doc.cadn.net.cn

@LongRunningTest

提供了 JUnit 5 @LongRunningTest 条件注解,用于检查环境或系统属性中是否存在值为 trueRUN_LONG_INTEGRATION_TESTS 条目,从而确定是否应运行或跳过测试。spring-doc.cadn.net.cn

常规变更

以下是在 5.1 版本中进行的更改:spring-doc.cadn.net.cn

Java DSL

IntegrationFlowContext现在是一个接口,IntegrationFlowRegistrationIntegrationFlowContext的内部接口。spring-doc.cadn.net.cn

为了方便在请求 - 响应配置中于流程末尾进行日志记录,已引入一个新的 logAndReply() 运算符。 这避免了与 log() 的混淆,后者被视为单向结束流组件。spring-doc.cadn.net.cn

对于集成流中的任何 NamedComponent,生成的 Bean 名称现在将基于组件类型,以便从可视化工具、日志分析器和指标收集器中获得更好的可读性。spring-doc.cadn.net.cn

The GenericHandler.handle() now excepts a MessageHeaders type for the second argument.spring-doc.cadn.net.cn

调度器异常

AbstractDispatcher 捕获并重新抛出的异常现在更加一致:spring-doc.cadn.net.cn

  • 任何具有 failedMessage 属性的 MessagingException 类型都会被原样重新抛出。spring-doc.cadn.net.cn

  • 所有其他异常都会被封装在 MessageDeliveryException 中,并设置 failedMessage 属性。spring-doc.cadn.net.cn

  • A MessagingException of any kind that has a failedMessage property was re-thrown unchangedspring-doc.cadn.net.cn

  • 一个没有 failedMessage 属性的 MessagingException 被包装在 MessagingException 中,且该 MessagingExceptionfailedMessage 属性已设置。spring-doc.cadn.net.cn

  • 其他 RuntimeException 个实例被原样重新抛出。spring-doc.cadn.net.cn

  • 已检查异常被包装在 MessageDeliveryException 中,且 failedMessage 属性已设置。spring-doc.cadn.net.cn

全局通道拦截器

全局通道拦截器现在适用于动态注册的通道,例如通过 Java DSL 使用 IntegrationFlowContext 或通过 beanFactory.initializeBean() 初始化的 Bean。 此前,当 Bean 在应用上下文刷新后创建时,拦截器不会被应用。spring-doc.cadn.net.cn

通道拦截器

ChannelInterceptor.postReceive() 在未收到消息时不再被调用;现在无需再检查 null Message<?>。 此前,该方法会被调用。 如果您有依赖此先前行为的拦截器,请改用实现 afterReceiveCompleted(),因为无论是否收到消息,该方法都会被调用。 此外,PolledAmqpChannelPolledJmsChannel 此前不会用 null 调用 afterReceiveCompleted();现在会这样做了。spring-doc.cadn.net.cn

ObjectToJsonTransformer

ObjectToJsonTransformer 引入了一个新的 ResultType.BYTES 模式。spring-doc.cadn.net.cn

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

集成流:生成的 Bean 名称

从 5.0.5 版本开始,在 IntegrationFlow 中生成的组件的 bean 名称将包含流 bean 的名称,后跟一个点,作为前缀。 例如,如果流 bean 被命名为 flowBean,则生成的 bean 可能命名为 flowBean.generatedBeanspring-doc.cadn.net.cn

有关更多信息,请参阅处理消息流spring-doc.cadn.net.cn

聚合器变更

如果 groupTimeout 被评估为负值,聚合器现在将立即使组过期。 只有 null 被视为对当前消息不做任何操作的信号。spring-doc.cadn.net.cn

已引入一个新的popSequence属性,默认情况下允许为输出消息调用MessageBuilder.popSequenceDetails()。 此外,AbstractAggregatingMessageGroupProcessor现在返回AbstractIntegrationMessageBuilder而非整个Message,以进行优化。spring-doc.cadn.net.cn

有关更多信息,请参阅 聚合器spring-doc.cadn.net.cn

@Publisher 注解变更

从版本 5.1 开始,您必须显式启用 @Publisher AOP 功能,方法是使用 @EnablePublisher 或在 <int:annotation-config> 上使用 <int:enable-publisher> 子元素。 此外,proxy-target-classorder 属性已添加用于调整 ProxyFactory 配置。spring-doc.cadn.net.cn

文件变更

如果您使用的是 FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSH,您可以提供一个 newFileCallback,该函数将在创建新文件时被调用。 此回调会接收新创建的文件以及触发回调的消息。 例如,这可用于写入 CSV 文件的表头。spring-doc.cadn.net.cn

The FileReadingMessageSource现在不会检查并创建目录,直到其 start() 被调用。 因此,如果 FileReadingMessageSource 的入站通道适配器具有 autoStartup = false,则在应用程序启动期间不会对文件系统造成失败。spring-doc.cadn.net.cn

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

AMQP 变更

我们在DefaultAmqpHeaderMapper中进行了IDTimestamp个头部映射更改。 有关更多信息,请参阅AMQP 消息头部底部的注释。spring-doc.cadn.net.cn

The contentType 标头现在已正确映射为通用标头映射中的条目。 有关更多信息,请参阅 contentType 标头spring-doc.cadn.net.cn

从版本 5.1.3 开始,如果在手动确认消息时发生消息转换异常,并且已定义错误通道,则负载为 ManualAckListenerExecutionFailedException,并带有额外的 channeldeliveryTag 属性。 这使得错误流程能够 ack/nack 原始消息。 有关更多信息,请参阅 入站消息转换spring-doc.cadn.net.cn

JDBC 更改

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

当请求消息的负载是 Iterable 类型的实例时,JdbcMessageHandler 现在支持 batchUpdate 功能。spring-doc.cadn.net.cn

INT_CHANNEL_MESSAGE 表(针对 JdbcChannelMessageStore)的索引已优化。 如果您在该存储中有大型消息组,可能需要修改索引。spring-doc.cadn.net.cn

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

FTP 和 SFTP 变更

现在可以使用 RotatingServerAdvice 通过入站通道适配器轮询多个服务器和目录。 有关更多信息,请参阅 入站通道适配器:轮询多个服务器和目录 以及 入站通道适配器:轮询多个服务器和目录spring-doc.cadn.net.cn

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

此外,入站通道适配器的同步器现在可以指定为 Comparator。 这在配合使用 maxFetchSize 以限制检索的文件数量时非常有用。spring-doc.cadn.net.cn

The CachingSessionFactory 具有一个新属性 testSession,当该属性为 true 时,会在从缓存中检出现有会话时,促使工厂对 Session 执行 test() 操作。spring-doc.cadn.net.cn

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

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

TCP 支持

使用 SSL 时,默认情况下已启用主机验证,以防止中间人攻击(需配合受信任的证书)。 有关更多信息,请参阅 主机验证spring-doc.cadn.net.cn

此外,密钥库和信任库的类型现在可以在 DefaultTcpSSLContextSupport 上配置。spring-doc.cadn.net.cn

Twitter 支持

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

JMS 支持

The JmsSendingMessageHandler 现在提供 deliveryModeExpressiontimeToLiveExpression 选项,用于在运行时确定要发送的 JMS 消息的相应 QoS 选项。 The DefaultJmsHeaderMapper 现在允许通过设置 true 来映射入站 JMSDeliveryModeJMSExpiration 属性到相应的 setMapInboundDeliveryMode()setMapInboundExpiration() 选项。 当 JmsMessageDrivenEndpointJmsInboundGateway 停止时,关联的监听器容器现在将被关闭;这将关闭其共享连接以及任何消费者。 您可以配置端点以恢复到以前的行为。spring-doc.cadn.net.cn

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

HTTP/WebFlux 支持

The statusCodeExpression (and Function) 现在随 RequestEntity<?> 作为根对象提供给评估上下文,因此请求头、方法、URI 和主体可用于目标状态码计算。spring-doc.cadn.net.cn

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

JMX 更改

对象名称键值现在如果包含任何不符合 Java 标识符(或点 .)允许的字符,将被引号包围。 例如 org.springframework.integration:type=MessageChannel, name="input:foo.myGroup.errors"。 这会产生一个副作用:之前“允许”的、包含此类字符的名称现在将被引号包围。 例如 org.springframework.integration:type=MessageChannel, name="input#foo.myGroup.errors"spring-doc.cadn.net.cn

Micrometer 支持变更

现在可以更简单地自定义框架创建的 Micrometer 标准指标。 有关更多信息,请参阅 Micrometer 集成spring-doc.cadn.net.cn

集成图自定义

现在可以通过在IntegrationGraphServer上使用Function<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationNode添加额外属性。 有关更多信息,请参阅集成图spring-doc.cadn.net.cn

集成全局属性

当为 org.springframework.integration 类别开启 DEBUG 逻辑级别时,现在可以将集成全局属性(包括默认值)打印到日志中。 有关更多信息,请参阅 全局属性spring-doc.cadn.net.cn

receiveTimeout对于@Poller

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

4.3 与 5.0 之间的变更

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

新组件

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

Java DSL

独立的 Spring Integration Java DSL 项目现已合并到核心 Spring Integration 项目中。 通道适配器和网关的 IntegrationComponentSpec 实现已分发到它们各自的模块。 有关 Java DSL 支持的更多信息,请参阅 Java DSL。 此外,请查看 4.3 至 5.0 迁移指南 以了解迁移到 Spring Integration 5.0 所需的步骤。spring-doc.cadn.net.cn

测试支持

我们创建了一个新的 Spring 集成测试框架,以帮助测试 Spring 集成应用程序。 现在,通过在测试类上添加@SpringIntegrationTest注解以及使用MockIntegration工厂,您可以使集成流的 JUnit 测试变得相对更容易。spring-doc.cadn.net.cn

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

MongoDB 出站网关

新的 MongoDbOutboundGateway 允许您通过向其请求通道发送消息,按需对数据库进行查询。spring-doc.cadn.net.cn

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

WebFlux 网关和通道适配器

我们推出了适用于 Spring WebFlux 框架网关和通道适配器的新 WebFlux 支持模块。spring-doc.cadn.net.cn

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

内容类型转换

现在,当我们使用新的 InvocableHandlerMethod-based 基础设施进行服务方法调用时,我们可以执行从负载到目标方法参数的 contentType 转换。spring-doc.cadn.net.cn

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

ErrorMessagePublisherErrorMessageStrategy

我们添加了 ErrorMessagePublisherErrorMessageStrategy 以创建 ErrorMessage 个实例。spring-doc.cadn.net.cn

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

JDBC 元数据存储

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

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

常规变更

Spring Integration 现在完全基于 Spring Framework 5.0 和 Project Reactor 3.1。 不再支持旧的 Project Reactor 版本。spring-doc.cadn.net.cn

核心变更

The @Poller注解现在拥有errorChannel属性,以便更轻松地配置底层的MessagePublishingErrorHandler。 有关更多信息,请参阅注解支持spring-doc.cadn.net.cn

所有基于AbstractReplyProducingMessageHandler的请求 - 回复端点现在都可以启动事务,从而使整个下游流程具有事务性。 有关更多信息,请参阅事务支持spring-doc.cadn.net.cn

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

默认情况下,POJO 方法现在使用 InvocableHandlerMethod 进行调用,但您可以像以前一样配置它们以使用 SpEL。 有关更多信息,请参阅 POJO 方法调用spring-doc.cadn.net.cn

当将 POJO 方法作为消息处理器进行目标处理时,现在可以使用 @Default 注解标记其中一个服务方法,为非匹配条件提供回退机制。 有关更多信息,请参阅 配置服务激活器spring-doc.cadn.net.cn

我们添加了一个简单的 PassThroughTransactionSynchronizationFactory,用于始终将轮询的消息存储在当前事务上下文中。 该消息被用作 MessagingExceptionfailedMessage 属性,MessagingException 封装了事务完成期间抛出的任何原始异常。 有关更多信息,请参阅 事务同步spring-doc.cadn.net.cn

聚合器基于表达式的ReleaseStrategy现在针对MessageGroup评估表达式,而不再仅仅是针对Message<?>的集合。 有关更多信息,请参阅聚合器和Spring表达式语言(SpEL)spring-doc.cadn.net.cn

您现在可以使用自定义的JsonObjectMapper来提供ObjectToMapTransformerspring-doc.cadn.net.cn

The @GlobalChannelInterceptor 注解和<int:channel-interceptor>现在支持负向模式(通过!前缀)用于组件名称匹配。 有关更多信息,请参阅全局通道拦截器配置spring-doc.cadn.net.cn

当候选者未能获取锁时,LockRegistryLeaderInitiator 现在通过 DefaultLeaderEventPublisher 发出一个新的 OnFailedToAcquireMutexEvent。 有关更多信息,请参见 Leadership Event Handlingspring-doc.cadn.net.cn

网关变更

当网关方法具有 void 返回类型且提供了错误通道时,网关现在会正确设置 errorChannel 头信息。 此前,该头信息未被填充。 这导致同步下游流(在调用线程上运行)将异常发送到配置的通道,但异步下游流中的异常会被发送到默认的 errorChannelspring-doc.cadn.net.cn

The RequestReplyExchanger 接口现在有一个 throws MessagingException 子句,以满足提议的消息交换契约。spring-doc.cadn.net.cn

您现在可以使用 SpEL 表达式来指定请求和回复超时时间。 有关更多信息,请参阅 消息网关spring-doc.cadn.net.cn

聚合器性能变更

默认情况下,聚合器现在使用 SimpleSequenceSizeReleaseStrategy,这在处理大型分组时效率更高。 空分组现在将在 empty-group-min-timeout 后安排移除。 有关更多信息,请参阅 Aggregatorspring-doc.cadn.net.cn

分割器更改

拆分器组件现在可以处理并拆分 Java Stream 和响应式流 Publisher 对象。 如果输出通道是 ReactiveStreamsSubscribableChannel,则 AbstractMessageSplitter 会为后续迭代构建一个 Flux,而不是常规的 Iterator,这与被拆分的对象无关。 此外,AbstractMessageSplitter 提供了 protected obtainSizeIfPossible() 方法,以便在可能的情况下确定 IterableIterator 对象的大小。 有关更多信息,请参阅 Splitterspring-doc.cadn.net.cn

JMS 变更

此前,Spring Integration JMS XML 配置为 JMS 连接工厂使用默认 Bean 名称 connectionFactory,允许在组件定义中省略该属性。 我们将其重命名为 jmsConnectionFactory,这是 Spring Boot 用于自动配置 JMS 连接工厂 Bean 的 Bean 名称。spring-doc.cadn.net.cn

如果您的应用程序依赖于之前的行为,您可以将 connectionFactory Bean 重命名为 jmsConnectionFactory,或者通过使用其当前名称明确配置您的组件以使用该 Bean。 有关更多信息,请参阅 JMS 支持spring-doc.cadn.net.cn

邮件变更

已解决渲染 IMAP 邮件内容时的一些不一致问题。 有关更多信息,请参阅“邮件接收通道适配器”部分中的该说明spring-doc.cadn.net.cn

订阅源更改

对于 com.rometools.fetcher.FeedFetcher(在 ROME 中已弃用),我们为 FeedEntryMessageSource 引入了一个新的 Resource 属性。 有关更多信息,请参阅 Feed Adapterspring-doc.cadn.net.cn

文件更改

我们引入了新的 FileHeaders.RELATIVE_PATH 消息头,用于在 FileReadingMessageSource 中表示相对路径。spring-doc.cadn.net.cn

尾部适配器现在支持 idleEventInterval,以便在文件在该时间段内没有数据时触发事件。spring-doc.cadn.net.cn

FileWritingMessageHandler 的刷新谓词现在具有一个附加参数。spring-doc.cadn.net.cn

出站通道适配器与网关(FileWritingMessageHandler)现在支持 REPLACE_IF_MODIFIED FileExistsModespring-doc.cadn.net.cn

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

一个新的 FileSystemMarkerFilePresentFileListFilter 现已可用。 有关更多信息,请参阅 处理不完整数据spring-doc.cadn.net.cn

The FileSplitter now provides a firstLineAsHeader option to carry the first line of content as a header in the messages emitted for the remaining lines.spring-doc.cadn.net.cn

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

FTP 和 SFTP 变更

入站通道适配器现在拥有一个名为 max-fetch-size 的属性,用于在轮询期间限制从本地目录中获取的文件数量(当本地目录当前没有文件时)。 默认情况下,它们在 local-filter 中也配置了 FileSystemPersistentAcceptOnceFileListFilterspring-doc.cadn.net.cn

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

您现在可以配置正则表达式和模式过滤器,使其始终通过目录。 当您在出站网关中使用递归时,这可能非常有用。spring-doc.cadn.net.cn

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

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

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

FTP 和 SFTP 出站通道适配器(以及用于出站网关的 PUT 命令)现在也支持将 InputStream 作为 payloadspring-doc.cadn.net.cn

入站通道适配器现在可以使用新引入的 RecursiveDirectoryScanner 在本地构建文件树。 请参见 FTP 入站通道适配器 部分中的 scanner 选项以进行注入。 此外,您现在可以将这些适配器切换到 WatchServicespring-doc.cadn.net.cn

我们将 NLST 命令添加到 AbstractRemoteFileOutboundGateway 中,以执行远程列出文件名的命令。spring-doc.cadn.net.cn

您现在可以使用 FtpOutboundGatewayworkingDirExpression 来更改当前请求消息的 FTP 客户端工作目录。spring-doc.cadn.net.cn

The RemoteFileTemplate 现在被提供给 invoke(OperationsCallback<F, T> action),以便在同一个线程绑定的 Session 范围内执行多次 RemoteFileOperations 调用。spring-doc.cadn.net.cn

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

The FtpOutboundGateway and SftpOutboundGateway 现在支持一个选项,可通过使用 GETMGET 命令在传输成功后删除远程文件。spring-doc.cadn.net.cn

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

集成属性

Version 4.3.2 新增了一个名为 spring.integration.readOnly.headers 的全局属性,允许您自定义不应被 MessageBuilder 复制到新创建的 Message 的头部列表。 有关更多信息,请参阅 全局属性spring-doc.cadn.net.cn

流式更改

我们在 CharacterStreamReadingMessageSource 上添加了一个新选项,使其能够用于“管道”标准输入,并在管道关闭时发布一个应用程序事件。 有关更多信息,请参阅 从流读取spring-doc.cadn.net.cn

屏障变更

The BarrierMessageHandler 现在支持丢弃通道,晚到的触发消息将发送至该通道。 有关更多信息,请参阅 线程屏障spring-doc.cadn.net.cn

AMQP 变更

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

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

可轮询的 AMQP 后端通道现在会阻塞轮询线程,使其等待配置的 receiveTimeout(默认值:一秒)。spring-doc.cadn.net.cn

消息转换器添加到消息属性中的标头(例如 contentType)现在会包含在最终消息中。 此前,最终消息中包含哪些标头和消息属性取决于转换器的类型。 若要覆盖由转换器设置的标头,请将 headersMappedLast 属性设置为 true。 有关更多信息,请参阅 AMQP 支持spring-doc.cadn.net.cn

HTTP 变更

默认情况下,DefaultHttpHeaderMapper.userDefinedHeaderPrefix 属性现在为空字符串,而不是 X-。 有关更多信息,请参阅 HTTP 标量映射spring-doc.cadn.net.cn

默认情况下,uriVariablesExpression 现在使用 SimpleEvaluationContext(自 5.0.4 版本起)。spring-doc.cadn.net.cn

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

MQTT 变更

入站消息现在使用 RECEIVED_TOPICRECEIVED_QOSRECEIVED_RETAINED 标头进行映射,以避免在应用程序中继消息时意外传播到出站消息。spring-doc.cadn.net.cn

出站通道适配器现在支持针对主题、服务质量(QoS)和保留属性的表达式。 默认值保持不变。 有关更多信息,请参阅 MQTT 支持spring-doc.cadn.net.cn

STOMP 变更

我们将 STOMP 模块更改为使用 ReactorNettyTcpStompClient,这是基于 Project Reactor 3.1reactor-netty 扩展的。 我们根据 ReactorNettyTcpStompClient 基础将 Reactor2TcpStompSessionManager 重命名为 ReactorNettyTcpStompSessionManager。 有关更多信息,请参阅 STOMP 支持spring-doc.cadn.net.cn

Web 服务变更

您现在可以使用外部配置的WebServiceTemplate实例来提供WebServiceOutboundGateway个实例。spring-doc.cadn.net.cn

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

简单的 WebService 入站和出站网关现在可以将完整的 WebServiceMessage 作为 payload 处理,从而支持对 MTOM 附件的操作。spring-doc.cadn.net.cn

有关更多信息,请参阅Web Services Supportspring-doc.cadn.net.cn

Redis 变更

The RedisStoreWritingMessageHandler now provides additional String-based setters for SpEL expressions (to facilitate Java configuration). You can now also configure the zsetIncrementExpression on the RedisStoreWritingMessageHandler. Additionally, this property has been changed from true to false because the INCR option on the ZADD Redis command is optional.spring-doc.cadn.net.cn

您现在可以使用RedisInboundChannelAdapterExecutor来执行 Redis 监听器调用者。 此外,接收到的消息现在包含一个RedisHeaders.MESSAGE_SOURCE头信息,用于指示消息的来源(主题或模式)。spring-doc.cadn.net.cn

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

TCP 变更

我们将一个 ThreadAffinityClientConnectionFactory 添加到绑定 TCP 连接到线程的功能中。spring-doc.cadn.net.cn

您现在可以配置 TCP 连接工厂以支持 PushbackInputStream 个实例,使反序列化器能够在“预读”后“回退”(push back)字节。spring-doc.cadn.net.cn

我们添加了 ByteArrayElasticRawDeserializer 而非 maxMessageSize,以根据需要控制和缓冲传入的数据。spring-doc.cadn.net.cn

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

JDBC 更改

The JdbcMessageChannelStore 现在为 ChannelMessageStorePreparedStatementSetter 提供了一个 setter,让您能够自定义消息在存储中的插入方式。spring-doc.cadn.net.cn

The ExpressionEvaluatingSqlParameterSourceFactory 现在为 sqlParameterTypes 提供了一个 setter,允许您自定义参数的 SQL 类型。spring-doc.cadn.net.cn

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

指标变更

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

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

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

4.2 与 4.3 之间的变更

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

新组件

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

AMQP 异步出站网关
MessageGroupFactory

我们引入了 MessageGroupFactory 策略以在 MessageGroupStore 逻辑中控制 MessageGroup 实例。 我们为 SimpleMessageGroup 添加了 SimpleMessageGroupFactory 实现,其中 GroupType.HASH_SET 作为标准 MessageGroupStore 实现的默认工厂。 有关更多信息,请参阅 消息存储spring-doc.cadn.net.cn

PersistentMessageGroup

我们为持久化 MessageGroupStore 实例添加了 PersistentMessageGroup(懒加载代理)实现, 当它们的 lazyLoadMessageGroupstrue(默认值)时,该实现会返回此实例以用于 getMessageGroup()。 有关更多信息,请参阅 消息存储spring-doc.cadn.net.cn

FTP 和 SFTP 流式传输入站通道适配器

我们添加了入站通道适配器,该适配器为每个文件返回InputStream,使您能够检索远程文件而无需将其写入本地文件系统。 有关更多信息,请参阅FTP 流式传输入站通道适配器SFTP 流式传输入站通道适配器spring-doc.cadn.net.cn

StreamTransformer

我们添加了 StreamTransformer 用于将 InputStream 负载转换为 byte[]String。 有关更多信息,请参见 流转换器spring-doc.cadn.net.cn

集成图

我们添加了 IntegrationGraphServer,与 IntegrationGraphController REST 服务一起,用于将 Spring Integration 应用的运行时模型以图的形式暴露出来。 有关更多信息,请参阅 集成图spring-doc.cadn.net.cn

JDBC 锁注册表

我们添加了JdbcLockRegistry以支持通过数据库表共享的分布式锁。 有关更多信息,请参阅JDBC 锁注册中心spring-doc.cadn.net.cn

LeaderInitiator对于LockRegistry

我们基于LockRegistry策略添加了LeaderInitiator实现。 有关更多信息,请参阅领导事件处理spring-doc.cadn.net.cn

常规变更

本节描述了 Spring Integration 4.3 版本带来的一般性变更。spring-doc.cadn.net.cn

核心变更

本节介绍 Spring Integration 核心部分的通用变更。spring-doc.cadn.net.cn

链中的出站网关

以前,您可以在链中的出站网关上指定 reply-channel。 该值会被完全忽略。 网关的回复会发送到下一个链元素;如果该网关是最后一个元素,则发送到链的输出通道。 现在系统会检测此情况并禁止使用。 如果您有这样的配置,请移除 reply-channelspring-doc.cadn.net.cn

异步服务激活器

我们添加了一个选项,使服务激活器变为同步模式。 有关更多信息,请参阅 异步服务激活器spring-doc.cadn.net.cn

消息注解支持变更

消息注解支持不需要在类级别声明 @MessageEndpoint(或任何其他 @Component)注解。 要恢复之前的行为,请将 spring.integration.propertiesspring.integration.messagingAnnotations.require.componentAnnotation 设置为 true。 有关更多信息,请参阅 全局属性注解支持spring-doc.cadn.net.cn

邮件变更

本节介绍 Spring Integration Mail 功能的一般性变更。spring-doc.cadn.net.cn

可自定义用户标志

可自定义的userFlag(于4.2.2版本中引入,用于提供对表示邮件已被查看的标志进行定制)现已可在XML命名空间中使用。 有关更多信息,请参阅当不支持\Recent时标记IMAP消息spring-doc.cadn.net.cn

邮件消息映射

您现在可以使用包含邮件头部的MessageHeaders来映射入站邮件消息,其中负载(payload)包含电子邮件内容。 此前,负载始终是原始的MimeMessage。 有关更多信息,请参阅入站邮件消息映射spring-doc.cadn.net.cn

JMS 变更

本节描述了 Spring Integration JMS 功能的一般变更。spring-doc.cadn.net.cn

标题映射器

The DefaultJmsHeaderMapper 现在通过调用其 toString() 方法,将标准 correlationId 报头作为消息属性进行映射。 有关更多信息,请参阅 将 JMS 消息的报头在消息之间进行映射spring-doc.cadn.net.cn

异步网关

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

聚合器变更

当 POJO 聚合器释放一个包含 Message<?> 个对象的集合时,其行为会发生变化。 这种情况很少见,但如果您的应用程序确实这样做,则需要对您的 POJO 进行小幅修改。 请参阅此 重要说明:SimpleMessageGroup.getMessages() 方法返回 unmodifiableCollection 以获取更多信息。spring-doc.cadn.net.cn

TCP/UDP 变更

本节描述了 Spring Integration TCP/UDP 功能的一般变更。spring-doc.cadn.net.cn

事件

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

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

流反序列化器

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

TCP 消息映射器

现在,消息映射器(message mapper)可选择性地设置已配置的内容类型头。 有关更多信息,请参阅 IP 消息头spring-doc.cadn.net.cn

文件更改

本节介绍 Spring Integration 文件功能的一般变更。spring-doc.cadn.net.cn

创建目标目录

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

The FileReadingMessageSource now hides the WatchService directory scanning logic in the inner class. We added the use-watch-service and watch-events options to enable this behavior. We deprecated the top-level WatchServiceDirectoryScanner because of inconsistency around the API. See WatchServiceDirectoryScanner for more information.spring-doc.cadn.net.cn

缓冲区大小

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

追加与刷新

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

保留时间戳

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

分割器更改

FileSplitter现在会在文件完全读取后自动关闭 FTP 或 SFTP 会话。 这适用于出站网关返回InputStream的情况,或者当您使用新的 FTP 或 SFTP 流式通道适配器时。 我们还引入了一个新的markers-json选项,用于将FileSplitter.FileMarker转换为JSONString,以简化下游网络交互。 有关更多信息,请参阅文件拆分器spring-doc.cadn.net.cn

文件过滤器

我们添加了 ChainFileListFilter 作为 CompositeFileListFilter 的替代方案。 有关更多信息,请参见 读取文件spring-doc.cadn.net.cn

AMQP 变更

本节介绍 Spring Integration AMQP 功能的一般变更。spring-doc.cadn.net.cn

内容类型消息转换器

出站端点现在支持配置一个RabbitTemplate,该端点可关联一个ContentTypeDelegatingMessageConverter,以便您能够根据消息的内容类型选择转换器。 有关更多信息,请参阅出站消息转换spring-doc.cadn.net.cn

延迟消息处理的标头

Spring AMQP 1.6 增加了对延迟消息交换的支持。 头映射现在支持该功能所使用的头 (amqp_delayamqp_receivedDelay)。spring-doc.cadn.net.cn

基于 AMQP 的通道

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

Redis 变更

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

列表推入/弹出方向

此前,队列通道适配器始终使用 Redis 列表以固定方向操作,即从左侧推入数据并从右侧读取数据。 现在,您可以通过 rightPopleftPush 选项分别配置 RedisQueueMessageDrivenEndpointRedisQueueOutboundChannelAdapter 的读写方向。 有关更多信息,请参阅 Redis 队列入站通道适配器Redis 队列出站通道适配器spring-doc.cadn.net.cn

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

入站网关中的默认序列化器已更改为 JdkSerializationRedisSerializer,以与出站网关保持兼容。 有关更多信息,请参阅 Redis 队列入站网关spring-doc.cadn.net.cn

HTTP 变更

此前,对于带有请求体(例如 POST)且缺少 content-type 头的请求,其请求体会被忽略。 本次发布后,此类请求的内容类型将按 RFC 2616 的建议视为 application/octet-stream。 有关更多信息,请参阅 Http Inbound Componentsspring-doc.cadn.net.cn

uriVariablesExpression now uses a SimpleEvaluationContext by default (since 4.3.15). See Mapping URI Variables for more information.spring-doc.cadn.net.cn

SFTP 更改

本节描述了对 Spring Integration SFTP 功能的通用更改。spring-doc.cadn.net.cn

工厂 Bean

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

chmod变更

SFTP 出站网关(用于 putmput 命令)以及 SFTP 出站通道适配器现在支持 chmod 属性,以便在上传后更改远程文件的权限。 有关更多信息,请参阅 SFTP Outbound Channel AdapterSFTP Outbound Gatewayspring-doc.cadn.net.cn

FTP 变更

本节介绍 Spring Integration FTP 功能的一般变更。spring-doc.cadn.net.cn

会话变更

The FtpSession 现在支持为 list()listNames() 方法使用 null,因为底层的 FTP 客户端可以使用它。 有了这一点,您现在可以配置 FtpOutboundGateway 而无需 remoteDirectory 表达式。 您还可以配置 <int-ftp:inbound-channel-adapter> 而无需 remote-directoryremote-directory-expression。 有关更多信息,请参阅 FTP/FTPS 适配器spring-doc.cadn.net.cn

路由变更

The ErrorMessageExceptionTypeRouter 现在支持 Exception 超类映射,以避免在多个继承者存在相同通道时产生重复。 为此,ErrorMessageExceptionTypeRouter 在初始化期间加载映射类,以便在发生 ClassNotFoundException 时快速失败。spring-doc.cadn.net.cn

有关更多信息,请参阅 路由spring-doc.cadn.net.cn

页眉映射

本节描述了从 4.2 版本到 4.3 版本的请求头映射变更。spring-doc.cadn.net.cn

通用

AMQP、WS 和 XMPP 的头部映射(例如 request-header-mappingreply-header-mapping)现在支持取反模式。 有关更多信息,请参阅 AMQP 消息头部WS 消息头部XMPP 消息头部spring-doc.cadn.net.cn

AMQP 头映射

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

Groovy 脚本

您现在可以使用 compile-static 提示符或任何其他 CompilerConfiguration 选项来配置 Groovy 脚本。 有关更多信息,请参阅 Groovy 配置spring-doc.cadn.net.cn

@InboundChannelAdapter变更

The @InboundChannelAdapter 现在为常规 value 提供了一个别名 channel 属性。 此外,目标 SourcePollingChannelAdapter 组件现在可以以延迟绑定方式从其提供的名称(outputChannelName 选项)中解析目标 outputChannel Bean。 有关更多信息,请参阅 注解支持spring-doc.cadn.net.cn

XMPP 变更

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

WireTap 后期绑定

The WireTap ChannelInterceptor 现在可以接受一个 channelName,该值将在首次活动的拦截器操作期间稍后解析为目标的 MessageChannel。 有关更多信息,请参阅 Wire Tapspring-doc.cadn.net.cn

ChannelMessageStoreQueryProvider变更

The ChannelMessageStoreQueryProvider now supports H2 databases. See Backing Message Channels for more information.spring-doc.cadn.net.cn

WebSocket 变更

The ServerWebSocketContainer now exposes an allowedOrigins option, and SockJsServiceOptions exposes a suppressCors option. See WebSockets Support for more information.spring-doc.cadn.net.cn

4.1 与 4.2 之间的变更

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

新组件

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

主要管理/JMX 重构

我们新增了一个 MetricsFactory 策略接口。 此变更连同 JMX 和管理基础设施中的其他变更,提供了对管理配置和运行时性能的更多控制能力。spring-doc.cadn.net.cn

然而,这对(某些)用户环境有一些重要的影响。spring-doc.cadn.net.cn

完整详情,请参见 指标与管理JMX 改进spring-doc.cadn.net.cn

MongoDB 元数据存储

MongoDbMetadataStore 现已可用。 有关更多信息,请参阅 MongoDB 元数据存储spring-doc.cadn.net.cn

SecuredChannel 注解

我们介绍了 @SecuredChannel 注解,以替换已弃用的 ChannelSecurityInterceptorFactoryBean。 更多信息,请参见 Spring Integration 中的安全性spring-doc.cadn.net.cn

SecurityContext传播

我们介绍了SecurityContextPropagationChannelInterceptor用于将SecurityContext传播从一个消息流的线程传递到另一个线程。 更多信息,请参阅Spring Integration 中的安全性spring-doc.cadn.net.cn

文件分割器

在 4.1.2 版本中,我们添加了 FileSplitter,用于将文本文件按行拆分。 它现在已在 int-file: 命名空间中得到完整支持。 有关更多信息,请参阅 文件拆分器spring-doc.cadn.net.cn

Zookeeper 支持

我们为该框架添加了 Zookeeper 支持,以协助在集群或多主机环境中运行。 此变更影响以下功能:spring-doc.cadn.net.cn

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

线程屏障

一个新的线程 <int:barrier/> 组件现已可用,允许线程挂起直到发生某些异步事件。 有关更多信息,请参阅 线程屏障spring-doc.cadn.net.cn

STOMP 支持

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

编解码器

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

消息 PreparedStatement Setter

对于 MessagePreparedStatementSetter<int-jdbc:outbound-gateway><int-jdbc:outbound-channel-adapter>),现在提供了一个新的 JdbcMessageHandler 函数式接口回调,作为使用 SqlParameterSourceFactory 来利用 requestMessage 上下文填充 PreparedStatement 参数的替代方案。 有关更多信息,请参阅 出站通道适配器spring-doc.cadn.net.cn

常规变更

本节描述了从版本 4.1 到版本 4.2 的通用变更。spring-doc.cadn.net.cn

消息拦截

作为现有 selector 属性的替代方案,<wire-tap/> 元素现在支持 selector-expression 属性。spring-doc.cadn.net.cn

文件更改

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

追加新行

The <int-file:outbound-channel-adapter> and <int-file:outbound-gateway> 现在支持一个 append-new-line 属性。 如果设置为 true,则在写入消息后会在文件末尾追加新行。 该属性的默认值为 falsespring-doc.cadn.net.cn

忽略隐藏文件

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

正在写入InputStream负载

The FileWritingMessageHandler now also accepts InputStream as a valid message payload type.spring-doc.cadn.net.cn

HeadDirectoryScanner

您现在可以将 HeadDirectoryScanner 与其他 FileListFilter 实现一起使用。spring-doc.cadn.net.cn

最后修改过滤器

我们添加了 LastModifiedFileListFilterspring-doc.cadn.net.cn

Watch Service Directory Scanner

我们添加了 WatchServiceDirectoryScannerspring-doc.cadn.net.cn

持久化文件列表过滤器更改

AbstractPersistentFileListFilter 新增了一个属性 (flushOnUpdate),当该属性设置为 true 时,如果元数据存储器实现了 Flushable(例如 PropertiesPersistingMetadataStore),则会调用 flush()spring-doc.cadn.net.cn

类包变更

我们将 ScatterGatherHandler 类从 org.springframework.integration.handler 移动到了 org.springframework.integration.scattergatherspring-doc.cadn.net.cn

TCP 变更

本节介绍 Spring Integration TCP 功能的一般变更。spring-doc.cadn.net.cn

TCP 序列化器

TCP Serializers不再flush()OutputStream。 现在由TcpNxxConnection类完成。 如果您直接在代码中使用序列化器,可能需要flush()OutputStreamspring-doc.cadn.net.cn

服务器套接字异常

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

TCP 服务器端口

如果您配置一个 TCP 服务器套接字工厂以监听随机端口,现在可以通过使用 getPort() 获取操作系统实际选择的端口。 getServerSocketAddress() 也可用。spring-doc.cadn.net.cn

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

TCP 网关远程超时

The TcpOutboundGateway now supports remote-timeout-expression as an alternative to the existing remote-timeout attribute. This allows setting the timeout based on each message.spring-doc.cadn.net.cn

此外,remote-timeout 不再默认与 reply-timeout 具有相同的值,而后者具有完全不同的含义。spring-doc.cadn.net.cn

有关更多信息,请参阅 .TCP 出站网关属性spring-doc.cadn.net.cn

TCP SSLSession 可用于标题映射

TcpConnection 个实现现在支持 getSslSession(),以便您可以从会话中提取信息并添加到消息头中。 有关更多信息,请参阅 IP 消息头spring-doc.cadn.net.cn

TCP 事件

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

TcpConnectionEventListeningMessageProducer 已弃用。 请改用通用事件适配器。spring-doc.cadn.net.cn

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

@InboundChannelAdapter变更

以前,入站通道适配器的 @Poller 默认将 maxMessagesPerPoll 属性设置为 -1(无穷大)。 这与 <inbound-channel-adapter/> 的 XML 配置不一致,后者默认为 1。 现在注解将该属性默认值设置为 1spring-doc.cadn.net.cn

API 变更

o.s.integration.util.FunctionIterator now requires a o.s.integration.util.Function instead of a reactor.function.Function. This was done to remove an unnecessary hard dependency on Reactor. Any uses of this iterator need to change the import.spring-doc.cadn.net.cn

Reactor 仍然受支持,用于诸如 Promise 网关等功能。 对于不需要该功能的用户,已移除了相关依赖项。spring-doc.cadn.net.cn

JMS 变更

本节介绍 Spring Integration TCP 功能的一般变更。spring-doc.cadn.net.cn

回复监听器延迟初始化

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

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

error-channel 现在用于转换错误。 在之前的版本中,它们会导致事务回滚和消息重新投递。spring-doc.cadn.net.cn

默认确认模式

当使用隐式定义的 DefaultMessageListenerContainer 时,默认的 acknowledge 现在为 transacted。 我们建议在使用此容器时使用 transacted,以避免消息丢失。 此默认设置现在适用于消息驱动的入站适配器(inbound adapter)和入站网关(inbound gateway)。 对于基于 JMS 的通道,它早已是默认值。spring-doc.cadn.net.cn

共享订阅

我们已为消息驱动端点和<int-jms:publish-subscribe-channel>添加了共享订阅(JMS 2.0)的命名空间支持。 此前,若要使用共享连接,必须将监听器容器配置为<bean/>声明。spring-doc.cadn.net.cn

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

条件轮询器

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

有关更多信息,请参阅消息源的条件轮询器spring-doc.cadn.net.cn

AMQP 变更

本节介绍 Spring Integration AMQP 功能的一般变更。spring-doc.cadn.net.cn

发布者确认

The <int-amqp:outbound-gateway> now supports confirm-correlation-expression, confirm-ack-channel, and confirm-nack-channel attributes (which have a purpose similar to that of <int-amqp:outbound-channel-adapter>).spring-doc.cadn.net.cn

关联数据

对于出站通道适配器和入站网关,如果关联数据为 Message<?>,它将作为确认或否定确认通道上消息的基础,并附加额外的头部信息。 此前,任何关联数据(包括 Message<?>)都会作为确认或否定确认消息的有效负载返回。spring-doc.cadn.net.cn

入站网关属性

The <int-amqp:inbound-gateway> now exposes the amqp-template attribute to allow more control over an external bean for the reply RabbitTemplate. You can also provide your own AmqpTemplate implementation. In addition, you can use default-reply-to if the request message does not have a replyTo property.spring-doc.cadn.net.cn

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

XPath 拆分器改进

The XPathMessageSplitter (<int-xml:xpath-splitter>) now allows the configuration of output-properties for the internal javax.xml.transform.Transformer and supports an Iterator mode (defaults to true) for the XPath evaluation org.w3c.dom.NodeList result.spring-doc.cadn.net.cn

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

HTTP 变更

本节描述了 Spring Integration HTTP 功能的一般变更。spring-doc.cadn.net.cn

CORS(跨域资源共享)

The HTTP inbound endpoints (<int-http:inbound-channel-adapter> and <int-http:inbound-gateway>) now allow the configuration of Cross-origin Resource Sharing (CORS).spring-doc.cadn.net.cn

有关更多信息,请参阅 跨源资源共享 (CORS) 支持spring-doc.cadn.net.cn

入站网关超时

您可以配置 HTTP 入站网关,使其在请求超时时返回您指定的状态码。 默认值现在是 500 Internal Server Error,而不是 200 OKspring-doc.cadn.net.cn

有关更多信息,请参见响应状态码spring-doc.cadn.net.cn

表单数据

我们已添加关于代理 multipart/form-data 请求的文档。 有关更多信息,请参阅 HTTP 支持spring-doc.cadn.net.cn

网关变更

本节描述了对 Spring Integration Gateway 功能的通用更改。spring-doc.cadn.net.cn

网关方法可以返回CompletableFuture<?>

当使用 Java 8 时,网关方法现在可以返回 CompletableFuture<?>。 有关更多信息,请参阅 CompletableFuturespring-doc.cadn.net.cn

MessagingGateway 注解

请求和回复的超时属性现在为 String,而不是 Long,以允许使用属性占位符或 SpEL 进行配置。 请参见 @MessagingGateway 注解spring-doc.cadn.net.cn

聚合器变更

本节介绍 Spring Integration 聚合器功能的一般变更。spring-doc.cadn.net.cn

聚合器性能

本次发布包含一些针对聚合组件(包括聚合器、重排序器等)的性能改进,通过更高效地在消息释放时将其从组中移除来实现。 已在消息存储中添加了新方法 (removeMessagesFromGroup)。 设置 removeBatchSize 属性(默认值:100)可调整每次操作删除的消息数量。 目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。spring-doc.cadn.net.cn

输出消息组处理器

当使用 ref 或内部 Bean 作为聚合器时,您现在可以直接绑定 MessageGroupProcessor。 此外,我们添加了一个 SimpleMessageGroupProcessor,用于返回组中的消息集合。 当输出处理器产生 Message<?> 的集合时,聚合器会逐个释放这些消息。 配置 SimpleMessageGroupProcessor 可使聚合器成为消息屏障,消息将被暂存直到全部到达,然后逐个释放。 有关更多信息,请参阅 Aggregatorspring-doc.cadn.net.cn

FTP 和 SFTP 变更

本节描述了 Spring Integration FTP 和 SFTP 功能的通用变更。spring-doc.cadn.net.cn

入站通道适配器

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

网关部分结果

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

委托会话工厂

我们添加了一个委托会话工厂,使得能够基于某些线程上下文值来选择特定的会话工厂。spring-doc.cadn.net.cn

有关更多信息,请参阅 委托会话工厂委托会话工厂spring-doc.cadn.net.cn

默认 Sftp 会话工厂

此前,DefaultSftpSessionFactory无条件允许连接到未知主机。 现在此行为可配置(默认值:false)。spring-doc.cadn.net.cn

工厂现在需要一个已配置的 knownHosts,除非 allowUnknownKeys 属性为 true(默认值:false),否则必须提供文件。spring-doc.cadn.net.cn

消息会话回调

我们在 <int-(s)ftp:outbound-gateway/> 中介绍了如何使用 requestMessage 上下文执行任何自定义 Session 操作,并引入了 MessageSessionCallback<F, T>spring-doc.cadn.net.cn

WebSocket 变更

我们向 WebSocketHandlerDecoratorFactory 添加了对 ServerWebSocketContainer 的支持,以便为内部 WebSocketHandler 实现链式自定义。 有关更多信息,请参阅 WebSockets 命名空间支持spring-doc.cadn.net.cn

应用程序事件适配器更改

The ApplicationEvent 适配器现在可以以 payload 作为 event 运行,从而直接允许省略自定义的 ApplicationEvent 扩展。 为此,我们在 <int-event:outbound-channel-adapter> 上引入了 publish-payload 布尔属性。 有关更多信息,请参阅 Spring ApplicationEvent 支持spring-doc.cadn.net.cn

4.0 与 4.1 之间的变更

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

新组件

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

Promise<?> 网关

消息网关方法现在支持 Reactor Promise 返回类型。 请参阅 异步网关spring-doc.cadn.net.cn

WebSocket 支持

The WebSocket 模块现已可用。 它完全基于 Spring WebSocket 和 Spring Messaging 模块,并提供了 <inbound-channel-adapter><outbound-channel-adapter>。 有关更多信息,请参阅 WebSocket 支持spring-doc.cadn.net.cn

散列-汇聚企业集成模式

我们实现了散列-聚合企业集成模式。 有关更多信息,请参见散列-聚合spring-doc.cadn.net.cn

路由单模式

我们已添加路由 slip EIP 模式实现。 有关更多信息,请参阅 路由 Slipspring-doc.cadn.net.cn

幂等接收器模式

我们通过添加 XML 中的 <idempotent-receiver> 组件,或 Java 配置中的 IdempotentReceiverInterceptorIdempotentReceiver 注解,实现了幂等接收器企业集成模式。有关更多信息,请参阅 幂等接收器企业集成模式 以及 Javadocspring-doc.cadn.net.cn

博恩JsonObjectMapper

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

Redis 队列网关

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

PollSkipAdvice

我们添加了 PollSkipAdvice,您可以在 <poller><advice-chain> 中使用它,以便根据您使用 PollSkipStrategy 实现的某些条件来判断是否应抑制(跳过)当前的轮询。 有关更多信息,请参阅 Pollerspring-doc.cadn.net.cn

常规变更

本节描述了从 4.0 版本到 4.1 版本的一般变更。spring-doc.cadn.net.cn

AMQP 入站端点,通道

使用消息监听器容器(入站端点和通道)的元素现在支持 missing-queues-fatal 属性。 有关更多信息,请参见 AMQP 支持spring-doc.cadn.net.cn

AMQP 出站端点

AMQP 出站端点支持一个名为 lazy-connect 的新属性(默认值:true)。 当设置为 true 时,直到第一条消息到达才会建立与代理的连接(假设没有入站端点,因为入站端点总是尝试在启动期间建立连接)。 当设置为 false 时,会在应用程序启动期间尝试建立连接。 有关更多信息,请参阅 AMQP 支持spring-doc.cadn.net.cn

简单消息存储

SimpleMessageStore 在调用 getMessageGroup() 时不再复制组。 有关更多信息,请参见 [警告]spring-doc.cadn.net.cn

Web Service 出站网关:encode-uri

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

HTTP 入站通道适配器与状态码

现在可以使用status-code-expression配置<http:inbound-channel-adapter>,以覆盖默认的200 OK状态。 有关更多信息,请参阅HTTP 命名空间支持spring-doc.cadn.net.cn

MQTT 适配器更改

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

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

MQTT 出站通道适配器现在支持异步发送,无需等待交付确认即可阻塞。 有关更多信息,请参阅出站通道适配器spring-doc.cadn.net.cn

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

FTP 和 SFTP 适配器变更

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

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

分割器和迭代器

Splitter 个组件现在支持将 Iterator 作为结果对象以生成输出消息。 有关更多信息,请参阅 Splitter(分割器)spring-doc.cadn.net.cn

聚合器

Aggregator个实例现在支持一个新属性expire-groups-upon-timeout。 有关更多信息,请查看聚合器spring-doc.cadn.net.cn

内容增强器改进

我们添加了一个 null-result-expression 属性,当 <enricher> 返回 null 时,该属性会被求值并返回。 您可以在 <header><property> 中添加它。 有关更多信息,请参阅 内容增强器spring-doc.cadn.net.cn

我们添加了一个 error-channel 属性,用于在 request-channel 下游发生 Exception 时处理错误流程。 这允许您返回一个替代对象以用于内容增强。 有关更多信息,请参阅 内容增强器spring-doc.cadn.net.cn

头部通道注册表

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

有序关闭

我们改进了有序关闭算法。 有关更多信息,请参阅 Orderly Shutdownspring-doc.cadn.net.cn

管理RecipientListRouter

The RecipientListRouter 现在提供多种管理操作,以便在运行时配置收件人。 借助此功能,您现在可以从一开始就配置 <recipient-list-router>,而无需任何 <recipient>。 有关更多信息,请参阅 RecipientListRouterManagementspring-doc.cadn.net.cn

AbstractHeaderMapper: 非标准头 token

The AbstractHeaderMapper 实现现在提供了额外的 NON_STANDARD_HEADERS Tokens,用于映射任何用户定义的头部(默认情况下未映射这些头部)。 有关更多信息,请参阅 AMQP 消息头部spring-doc.cadn.net.cn

AMQP 通道:template-channel-transacted

我们为 AMQP MessageChannel 实例引入了 template-channel-transacted 属性。 有关更多信息,请参阅 AMQP 支持的通道spring-doc.cadn.net.cn

Syslog 适配器

默认的 syslog 消息转换器现在提供了一个选项,可以在保留原始消息作为负载的同时仍设置头部信息。 有关更多信息,请参阅 Syslog 入站通道适配器spring-doc.cadn.net.cn

异步网关

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

聚合器建议链

AggregatorResequencer 现在支持 <expire-advice-chain/><expire-transactional/> 子元素,以建议 forceComplete 操作。 有关更多信息,请参阅 使用 XML 配置聚合器spring-doc.cadn.net.cn

出站通道适配器和脚本

The <int:outbound-channel-adapter/> now supports the <script/> child element. The underlying script must have a void return type or return null. See Groovy support and Scripting Support.spring-doc.cadn.net.cn

重排序器变更

当重排序器中的消息组超时(使用 group-timeoutMessageGroupStoreReaper)时,迟到到达的消息现在默认会被立即丢弃。 请参阅 重排序器spring-doc.cadn.net.cn

可选的 POJO 方法参数

Spring Integration 现在一致地处理 Java 8 的 Optional 类型。 请参见 配置服务激活器spring-doc.cadn.net.cn

QueueChannel后端队列类型

支持 QueueChannelQueue type 已从 BlockingQueue 更改为更通用的 Queue。 此变更允许使用任何外部 Queue 实现(例如,Reactor 的 PersistentQueue)。 参见 QueueChannel 配置spring-doc.cadn.net.cn

ChannelInterceptor变更

The ChannelInterceptor now supports additional afterSendCompletion() and afterReceiveCompletion() methods. See Channel Interceptors.spring-doc.cadn.net.cn

IMAP PEEK

自版本 4.1.1 起,如果您显式地将 mail.[protocol].peek JavaMail 属性设置为 false(其中 [protocol] 代表 imapimaps),则行为会发生变化。 请参阅 [重要]spring-doc.cadn.net.cn

3.0 与 4.0 之间的变更

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

新组件

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

MQTT 通道适配器

MQTT 通道适配器(之前可在 Spring Integration Extensions 仓库中获取)现在已作为标准 Spring Integration 发行版的一部分提供。 请参阅 MQTT 支持spring-doc.cadn.net.cn

@EnableIntegration

我们添加了 @EnableIntegration 注解,以便在使用 @Configuration 类时能够声明标准的 Spring Integration Bean。 有关更多信息,请参阅 注解支持spring-doc.cadn.net.cn

@IntegrationComponentScan

我们添加了 @IntegrationComponentScan 注解,以允许对 Spring Integration 特定组件进行类路径扫描。 有关更多信息,请参阅 注解支持spring-doc.cadn.net.cn

"@启用消息历史"

您现在可以在 @EnableMessageHistory 类中使用 @EnableMessageHistory 注解来启用消息历史记录。 此外,JMX MBean 可以修改消息历史记录设置。 另外,MessageHistory 可以跟踪为已标注端点(如 @ServiceActivator@Splitter 等)自动创建的 MessageHandler 实例。 更多信息,请参阅 消息历史记录spring-doc.cadn.net.cn

@MessagingGateway

您现在可以使用 @MessagingGateway 注解来配置消息网关接口。 它是 <int:gateway/> XML 元素的等效物。 更多信息,请参阅 @MessagingGateway 注解spring-doc.cadn.net.cn

Spring Boot@EnableAutoConfiguration

除了前面提到的 @EnableIntegration 注解外,我们还引入了一个钩子,允许 Spring Integration 的基础设施 Bean 使用 Spring Boot 的 @EnableAutoConfiguration 注解进行配置。 更多信息,请参阅 Spring Boot 参考指南中的“自动配置”spring-doc.cadn.net.cn

@GlobalChannelInterceptor

除了上述提到的 @EnableIntegration 注解外,我们还引入了 @GlobalChannelInterceptor 注解。 更多信息,请参见 注解支持spring-doc.cadn.net.cn

@IntegrationConverter

我们引入了 @IntegrationConverter 注解,作为 <int:converter/> 组件的对应物。 更多信息,请参见 注解支持spring-doc.cadn.net.cn

@EnablePublisher

我们添加了 @EnablePublisher 注解,以便为 @Publisher 注解指定 default-publisher-channel。 有关更多信息,请参阅 注解支持spring-doc.cadn.net.cn

Redis 通道消息存储

我们添加了一个 Redis MessageGroupStore,该配置针对用于持久化QueueChannel的场景进行了优化。 更多信息,请参见Redis 通道消息存储spring-doc.cadn.net.cn

我们已添加一个 Redis ChannelPriorityMessageStore。 您可以使用它按优先级检索消息。 更多信息,请参阅 Redis 通道消息存储spring-doc.cadn.net.cn

MongoDB 通道消息存储

MongoDB 支持现在提供了 MongoDbChannelMessageStore,这是一个特定于通道的 MessageStore 实现。 使用 priorityEnabled = true,您可以在 <int:priority-queue> 元素中使用它来实现持久化消息的优先级轮询。 更多信息请参见 MongoDB 通道消息存储spring-doc.cadn.net.cn

@EnableIntegrationMBeanExport

您现在可以在 @Configuration 类中使用 @EnableIntegrationMBeanExport 注解来启用 IntegrationMBeanExporter。 更多信息,请参见 MBean Exporterspring-doc.cadn.net.cn

ChannelSecurityInterceptorFactoryBean

ChannelSecurityInterceptorFactoryBean now supports configuration of Spring Security for message channels that use @Configuration classes. For more information, see Security in Spring Integration.spring-doc.cadn.net.cn

Redis 命令网关

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

RedisLockRegistry

The RedisLockRegistry is now available to support global locks visible to multiple application instances and servers. These can be used with aggregating message handlers across multiple application instances such that group release occurs on only one instance. For more information, see Redis Lock Registry and Aggregator.spring-doc.cadn.net.cn

@Poller

基于注解的消息配置现在可以拥有一个 poller 属性。 这意味着使用 @ServiceActivator@Aggregator 等注解的方法现在可以使用一个指向 PollableChannel 的引用作为 inputChannel。 更多信息,请参阅 注解支持spring-doc.cadn.net.cn

@InboundChannelAdapterSmartLifecyclefor 注解端点

我们添加了 @InboundChannelAdapter 方法注解。 它相当于 <int:inbound-channel-adapter> XML 组件。 此外,所有消息传递注解现在都提供 SmartLifecycle 选项。 更多信息,请参见 注解支持spring-doc.cadn.net.cn

Twitter 搜索出站网关

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

@BridgeFrom@BridgeTo注解

我们介绍了 @BridgeFrom@BridgeTo@Bean 方法注解,用于在 MessageChannel 类中标记 @Configuration Bean。 更多信息,请参见 注解支持spring-doc.cadn.net.cn

元消息注解

消息传递注解(@ServiceActivator@Router@MessagingGateway及其他)现在可以配置为自定义消息传递注解的元注解。 此外,自定义注解可以具有相同的属性(inputChannel@PollerautoStartup及其他)。 更多信息,请参阅注解支持spring-doc.cadn.net.cn

常规变更

本节描述了从 3.0 版本到 4.0 版本的一般性变更。spring-doc.cadn.net.cn

需要 Spring Framework 4.0

我们将核心消息抽象(MessageMessageChannel及其他)移至 Spring Framework spring-messaging 模块。 直接在代码中引用这些类的开发者需要做出更改,具体操作请参考3.0 到 4.0 迁移指南的第一部分。spring-doc.cadn.net.cn

XPath Header Enricher 的头部类型

我们为 <int-xml:xpath-header-enricher> 的子元素 header 引入了 header-type 属性。 此属性为头值提供目标类型(XPath 表达式评估的结果将转换为此类型)。 更多信息请参阅 XPath 头增强器spring-doc.cadn.net.cn

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

我们为 <int:object-to-json-transformer> 引入了 result-type 属性。 该属性提供了将对象映射为 JSON 时结果的目标类型。 它支持 STRING(默认值)和 NODE。 更多信息请参见 自版本 3.0 起,Spring Integration 还提供了一种内置的 #xpath SpEL 函数,可用于表达式中。spring-doc.cadn.net.cn

JMS 标头映射

DefaultJmsHeaderMapper现在将传入的JMSPriority头映射到Spring Integration priority头。 此前,priority仅用于出站消息。 更多信息,请参阅将消息头映射到JMS消息及从JMS消息映射spring-doc.cadn.net.cn

JMS 出站通道适配器

JMS 出站通道适配器现在支持 session-transacted 属性(默认值:false)。 此前,您必须注入自定义的 JmsTemplate 才能使用事务。 请参阅 出站通道适配器spring-doc.cadn.net.cn

JMS 入站通道适配器

JMS 入站通道适配器现在支持 session-transacted 属性(默认值:false)。 此前,若要使用事务,您必须注入自定义的 JmsTemplate。 该适配器允许在 acknowledgeMode 中使用 'transacted',这是不正确的且无法正常工作。 此值不再被允许。 请参见 入站通道适配器spring-doc.cadn.net.cn

数据类型通道

您现在可以指定一个 MessageConverter,用于在数据转换过程中(如需要时)将负载转换为 Datatype 通道中接受的其中一个 datatype 实例。 更多信息,请参阅 Datatype 通道配置spring-doc.cadn.net.cn

更简单的重试建议配置

我们添加了简化的命名空间支持,用于配置 RequestHandlerRetryAdvice。 有关更多信息,请参见 配置重试建议spring-doc.cadn.net.cn

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

我们向 <int:aggregator><int:resequencer> 添加了互斥的 group-timeoutgroup-timeout-expression 属性。 这些属性允许强制完成部分 MessageGroup,前提是 ReleaseStrategy 未释放分组且在规定时间间隔内没有进一步的消息到达。 有关更多信息,请参阅 使用 XML 配置聚合器spring-doc.cadn.net.cn

Redis 元数据存储

The RedisMetadataStore 现在实现了 ConcurrentMetadataStore,使其能够在多个应用程序实例或服务器环境中用于 AbstractPersistentAcceptOnceFileListFilter 实现。 有关更多信息,请参阅 Redis 元数据存储读取文件FTP 入站通道适配器SFTP 入站通道适配器spring-doc.cadn.net.cn

JdbcChannelMessageStorePriorityChannel

T`JdbcChannelMessageStore` 现在实现了 PriorityCapableChannelMessageStore,使其可作为 message-store 引用用于 priority-queue 实例。 更多信息,请参阅 支持的消息通道spring-doc.cadn.net.cn

AMQP 端点交付模式

Spring AMQP 默认会在代理上创建持久消息。 您可以通过设置 amqp_deliveryMode 头或自定义映射器来覆盖此行为。 我们在适配器中添加了便捷的 default-delivery-mode 属性,以便更轻松地配置此重要设置。 更多信息,请参阅 出站通道适配器出站网关spring-doc.cadn.net.cn

FTP 超时

The DefaultFtpSessionFactory现在暴露了connectTimeoutdefaultTimeoutdataTimeout属性,从而避免了通过子类化工厂来设置这些公共属性的需要。 postProcess*方法仍然可用于更高级的配置。 有关更多信息,请参阅FTP Session Factoryspring-doc.cadn.net.cn

推特:StatusUpdatingMessageHandler

The StatusUpdatingMessageHandler (<int-twitter:outbound-channel-adapter>) 现在支持 tweet-data-expression 属性,用于构建 org.springframework.social.twitter.api.TweetData 对象以更新时间线状态。 此功能允许例如附加图像。 有关更多信息,请参阅 Spring Integration Social Twitterspring-doc.cadn.net.cn

JPA 检索网关:id-expression

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

TCP 反序列化事件

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

消息注解在@Bean定义

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

2.2 与 3.0 之间的变更

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

新组件

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

HTTP 请求映射

HTTP 模块现在为入站端点提供了强大的请求映射支持。 我们将 UriPathHandlerMapping 类替换为 IntegrationRequestMappingHandlerMapping,该类的 bean 名称在应用上下文中注册为 integrationRequestMappingHandlerMapping。 解析 HTTP 入站端点时,会注册一个新的 IntegrationRequestMappingHandlerMapping bean,或者复用现有的 bean。 为了实现灵活的请求映射配置,Spring Integration 为 <http:inbound-channel-adapter/><http:inbound-gateway/> 提供了 <request-mapping/> 子元素。 现在的两个 HTTP 入站端点完全基于 Spring MVC 3.1 引入的请求映射基础设施构建。 例如,单个入站端点支持多个路径。 更多信息请参见 HTTP 命名空间支持spring-doc.cadn.net.cn

Spring 表达式语言 (SpEL) 配置

我们添加了新的IntegrationEvaluationContextFactoryBean,以允许在框架的 SpEL 表达式中配置自定义PropertyAccessor实现和函数。 更多信息,请参见Spring 表达式语言 (SpEL)spring-doc.cadn.net.cn

SpEL 函数支持

为了使用静态 Method 函数自定义 SpEL EvaluationContext,我们引入了 <spel-function/> 组件。 我们还添加了两个内置函数:#jsonPath#xpath。 更多信息,请参阅 SpEL 函数spring-doc.cadn.net.cn

SpEL 属性访问器支持

为了使用 PropertyAccessor 实现来定制 SpEL EvaluationContext,我们添加了 <spel-property-accessors/> 组件。 更多信息,请参见 属性访问器spring-doc.cadn.net.cn

Redis: 新组件

我们添加了一个基于 Redis 的 MetadataStore 实现。 您可以使用 RedisMetadataStore 在应用程序重启之间维护 MetadataStore 的状态。 这个新的 MetadataStore 实现可以与适配器一起使用,例如:spring-doc.cadn.net.cn

我们新增了基于队列的组件。 我们为 Redis List 分别添加了 <int-redis:queue-inbound-channel-adapter/><int-redis:queue-outbound-channel-adapter/> 组件,以执行“右弹出”和“左压入”操作。spring-doc.cadn.net.cn

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

头部通道注册表

您现在可以指示框架将回复通道和错误通道存储在注册表中,以便稍后解析。 这在replyChannelerrorChannel可能丢失的情况下非常有用(例如,在序列化消息时)。 有关更多信息,请参阅头部增强器spring-doc.cadn.net.cn

MongoDB 支持:新ConfigurableMongoDbMessageStore

除了现有的 eMongoDbMessageStore 之外,我们引入了一个新的 ConfigurableMongoDbMessageStore。 这为 MongoDB 提供了更健壮和灵活的 MessageStore 实现。 它与现有的存储库不向后兼容,但我们建议在新应用中使用它。 现有应用也可以使用它,但旧存储库中的消息将不可用。 有关更多信息,请参阅 MongoDB 支持spring-doc.cadn.net.cn

Syslog 支持

在2.2 SyslogToMapTransformer的基础上,Spring Integration 3.0引入了UDPTCP入站通道适配器,专门用于接收SYSLOG消息。 更多信息,请参阅Syslog支持spring-doc.cadn.net.cn

tail支持

我们添加了使用 tail 命令的文件入站通道适配器,以便在文本文件末尾添加行时生成消息。 请参阅 'tail'ing Filesspring-doc.cadn.net.cn

JMX 支持

我们添加了 <int-jmx:tree-polling-channel-adapter/>。 此适配器查询 JMX MBean 树,并发送一条消息,其负载为与查询匹配的对象图。 默认情况下,MBeans 被映射为基本类型和简单对象(例如 MapList 以及数组)。 它允许简单的转换,例如转换为 JSON。spring-doc.cadn.net.cn

The IntegrationMBeanExporter 现在允许通过 naming-strategy 属性配置自定义的 ObjectNamingStrategyspring-doc.cadn.net.cn

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

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

TcpConnection 实例现在在连接打开或关闭或发生异常时发出 ApplicationEvent 个实例(具体为 TcpConnectionEvent 个实例)。 此更改允许应用程序通过使用正常的 Spring ApplicationListener 机制来获知 TCP 连接的变化。spring-doc.cadn.net.cn

我们将 AbstractTcpConnection 重命名为 TcpConnectionSupport。 此类子类的自定义连接可以使用其方法发布事件。 同样,我们将 AbstractTcpConnectionInterceptor 重命名为 TcpConnectionInterceptorSupportspring-doc.cadn.net.cn

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

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

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

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

入站通道适配器脚本支持

The <int:inbound-channel-adapter/> 现在支持使用 <expression/><script/> 子元素来创建 MessageSource。 查看 通道适配器表达式和脚本spring-doc.cadn.net.cn

内容增强器:请求头增强支持

内容增强器现在提供了针对 <header/> 个子元素的配置,以便基于底层消息流的回复消息,使用响应消息中的报头来丰富出站消息。 更多信息请参见 负载增强器spring-doc.cadn.net.cn

常规变更

本节描述了从 2.2 版本到 3.0 版本的一般性变更。spring-doc.cadn.net.cn

消息 ID 生成

此前,消息 ID 是使用 JDK UUID.randomUUID() 方法生成的。 本次发布中,默认机制已更改为使用更高效且速度显著提升的算法。 此外,我们增加了更改用于生成消息 ID 的策略的能力。 更多信息请参见 消息 ID 生成spring-doc.cadn.net.cn

"网关"变更

您现在可以在所有网关方法中设置公共请求头,并且我们增加了更多选项,以便在消息中添加关于已调用的方法的更多信息。spring-doc.cadn.net.cn

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

The GatewayMethodMetadata is now a public class. It lets you programmatically configure the GatewayProxyFactoryBean from Java.spring-doc.cadn.net.cn

有关更多信息,请参阅 消息网关spring-doc.cadn.net.cn

HTTP 端点变更
  • 出站端点 encode-uri: <http:outbound-gateway/><http:outbound-channel-adapter/> 现在提供 encode-uri 属性,用于在发送请求前禁用 URI 对象的编码。spring-doc.cadn.net.cn

  • 入站端点 merge-with-default-converters: <http:inbound-gateway/><http:inbound-channel-adapter/> 现在拥有一个 merge-with-default-converters 属性,用于在自定义消息转换器之后包含默认 HttpMessageConverter 实例的列表。spring-doc.cadn.net.cn

  • If-Modified-SinceIf-Unmodified-Since HTTP 请求头: 此前,If-Modified-SinceIf-Unmodified-Since HTTP 请求头在 DefaultHttpHeaderMapper 中映射的 from 和 to HTTP 请求头内被错误处理。 现在,除了修复该问题外,DefaultHttpHeaderMapper 还为任何接受日期时间值的 HTTP 请求头提供了从格式化字符串进行日期解析的功能。spring-doc.cadn.net.cn

  • 入站端点表达式变量: 除了现有的 #requestParams#pathVariables 之外,<http:inbound-gateway/><http:inbound-channel-adapter/> 现在支持额外的有用变量:#matrixVariables, #requestAttributes, #requestHeaders, 和 #cookies。 这些变量在负载(payload)和头部(header)表达式中均可用。spring-doc.cadn.net.cn

  • 出站端点 'uri-variables-expression': HTTP 出站端点现在支持 uri-variables-expression 属性,用于指定一个 Expression 来评估 URL 模板中所有 URI 变量占位符的 Map。 这允许根据传出消息选择不同的表达式映射。spring-doc.cadn.net.cn

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

Jackson 支持 (JSON)
  • 引入了用于 JSON 转换的新抽象。 当前提供了 Jackson 1.x 和 Jackson 2 的实现,具体版本由类路径中的存在情况决定。 此前仅支持 Jackson 1.x。spring-doc.cadn.net.cn

  • The ObjectToJsonTransformer and JsonToObjectTransformer now emit/consume headers containing type information.spring-doc.cadn.net.cn

有关更多信息,请参见转换器中的“JSON 转换器”。spring-doc.cadn.net.cn

链式元素id属性

之前,id 属性在 <chain> 内部的元素中会被忽略,在某些情况下甚至不被允许。 现在,id 属性被允许用于 <chain> 内部的所有元素。 链元素的 Bean 名称是周围链的 id 与该元素自身的 id 的组合。 例如:'myChain$child.myTransformer.handler'。 更多信息请参阅:消息处理链spring-doc.cadn.net.cn

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

AbstractCorrelatingMessageHandler 提供了一个名为 empty-group-min-timeout 的新属性,允许空组过期以比部分组过期更长的调度运行。 空组在至少经过此毫秒数未修改之前,不会从 MessageStore 中移除。 更多信息,请参阅 使用 XML 配置聚合器spring-doc.cadn.net.cn

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

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

脚本支持:变量变更

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

直接通道负载均衡配置

之前,当在通道的LoadBalancingStrategy子元素上配置dispatcher时,唯一的可用选项是使用预定义的值枚举,这不允许开发者为LoadBalancingStrategy设置自定义实现。 现在,您可以使用load-balancer-ref来引用LoadBalancingStrategy的自定义实现。 更多信息,请参阅DirectChannelspring-doc.cadn.net.cn

发布订阅通道行为

此前,向没有订阅者的<publish-subscribe-channel/>发送消息会返回false结果。 如果与MessagingTemplate配合使用,这将导致抛出异常。 现在,PublishSubscribeChannel拥有一个名为minSubscribers的属性(默认值:0)。 如果消息被发送到至少最小数量的订阅者,则发送操作被视为成功(即使该数量为零)。 如果应用程序期望在这些条件下收到异常,请将最小订阅者数设置为至少为1。spring-doc.cadn.net.cn

FTP、SFTP 和 FTPS 变更

FTP、SFTP 和 FTPS 端点默认不再缓存会话。spring-doc.cadn.net.cn

我们已从所有端点中移除了已弃用的 cached-sessions 属性。 此前,由该属性值控制的嵌入式缓存机制无法限制缓存大小,可能导致缓存无限增长。 2.1 版本引入了 CachingConnectionFactory,它已成为首选(且现在是唯一)的会话缓存方式。spring-doc.cadn.net.cn

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

The DefaultSftpSessionFactory(与 CachingSessionFactory 配合)现在支持在单个 SSH 连接上复用通道(仅限 SFTP)。spring-doc.cadn.net.cn

FTP、SFTP 和 FTPS 入站适配器

此前,没有方法可以覆盖用于处理从远程服务器检索的文件的默认过滤器。 filter属性决定检索哪些文件,但FileReadingMessageSource使用AcceptOnceFileListFilter。 这意味着,如果以与先前复制的文件相同的名称检索新副本,则适配器不会发送任何消息。spring-doc.cadn.net.cn

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

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

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

FTP、SFTP 和 FTPS 网关

网关现在支持 mv 命令,从而能够重命名远程文件。spring-doc.cadn.net.cn

网关现在支持递归 lsmget 命令,从而能够获取远程文件树。spring-doc.cadn.net.cn

网关现在支持 putmput 命令,允许向远程服务器发送文件。spring-doc.cadn.net.cn

现在支持 local-filename-generator-expression 属性,从而能够在检索时为本地文件命名。 默认情况下,使用与远程文件相同的名称。spring-doc.cadn.net.cn

现在支持 local-directory-expression 属性,允许在检索时根据远程目录命名本地目录。spring-doc.cadn.net.cn

远程文件模板

为 FTP 和 SFTP 模块所使用的 Session 实现提供了一个更高级别的抽象(RemoteFileTemplate)。 虽然它被端点内部使用,但您也可以以编程方式使用此抽象。 与所有 Spring *Template 实现一样,它在允许底层访问会话的同时,能够可靠地关闭底层会话。spring-doc.cadn.net.cn

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

'requires-reply' 属性用于出站网关

所有出站网关(例如 <jdbc:outbound-gateway/><jms:outbound-gateway/>)均设计用于‘请求 - 回复’场景。 预期外部服务会返回响应,并发布到 reply-channelreplyChannel 消息头中。 然而,在某些情况下,外部系统可能不会始终返回结果(例如, 当 SELECT 语句以空 ResultSet 结束时,或者是一个单向 Web 服务时,会出现 <jdbc:outbound-gateway/>)。 因此,开发人员需要一个选项来配置是否必须等待回复。 为此,我们引入了 requires-reply 属性供出站网关组件使用。 在大多数情况下,requires-reply 的默认值为 true。 如果没有结果,将抛出 ReplyRequiredException。 将其值更改为 false 意味着,如果外部服务未返回任何内容,则消息流将在该点结束,类似于出站通道适配器。spring-doc.cadn.net.cn

WebService 出站网关具有一个名为 ignore-empty-responses 的附加属性。 它用于将空的 String 响应视为未收到任何响应。 默认情况下,它的值为 true,但您可以将其设置为 false,以便应用程序能够在回复消息负载中接收空 String。 当该属性为 true 时,在 requires-reply 属性的上下文中,空字符串被视为无响应。 默认情况下,requires-reply 对于 WebService 出站网关为 false。

请注意,requiresReply属性之前存在但在AbstractReplyProducingMessageHandler中被设置为false,并且无法通过XML命名空间在出站网关中配置该属性。spring-doc.cadn.net.cn

以前,未收到回复的网关会静默结束流程(附带一条 DEBUG 级别日志消息)。 默认情况下,通过此更改,大多数网关现在将抛出异常。 若要恢复之前的行为,请将 requires-reply 设置为 false
AMQP 出站网关头映射

此前,<int-amqp:outbound-gateway/>在调用消息转换器之前会映射头信息,且转换器可能会覆盖诸如content-type之类的头信息。 而出站适配器则在转换之后映射头信息,这意味着将使用出站Message(如果存在)中的content-type等头信息。spring-doc.cadn.net.cn

从本版本开始,网关现在在消息转换之后映射请求头,与适配器保持一致。 如果您的应用依赖于之前的行为(即转换器的请求头会覆盖已映射的请求头),则需要过滤这些请求头(在消息到达网关之前)或正确设置它们。 受 SimpleMessageConverter 影响的请求头是 content-typecontent-encoding。 自定义消息转换器可能会设置其他请求头。spring-doc.cadn.net.cn

存储过程组件改进

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

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

有关更多信息,请参阅 存储过程spring-doc.cadn.net.cn

Web 服务出站 URI 配置

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

Redis 适配器变更

Redis 入站通道适配器现在可以为 serializer 属性使用 null 值,此时原始数据即为消息负载。spring-doc.cadn.net.cn

Redis 出站通道适配器现在拥有 topic-expression 属性,用于在运行时确定 Redis 主题的 Messagespring-doc.cadn.net.cn

Redis 入站通道适配器除了现有的 topics 属性外,现在还具有 topic-patterns 属性。spring-doc.cadn.net.cn

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

顾问过滤器

以前,当 <filter/> 拥有 <request-handler-advice-chain/> 时,丢弃操作完全在通知链(包括 discard-channel 上的任何下游流程)的范围内执行。 现在,filter 元素拥有一个名为 discard-within-advice 的属性(默认值:true),允许在通知链完成后执行丢弃操作。 请参阅 Advising Filtersspring-doc.cadn.net.cn

使用注解建议端点

请求处理器建议链现在可以使用注解进行配置。 请参阅 使用注解为端点提供建议spring-doc.cadn.net.cn

ObjectToStringTransformer 改进

此转换器现在可正确地将 byte[]char[] 负载转换为 String。 更多信息,请参见 转换器spring-doc.cadn.net.cn

JPA 支持变更

现在,用于持久化或合并的载荷可以是java.lang.Iterable类型。spring-doc.cadn.net.cn

在这种情况下,由 Iterable 返回的每个对象都被视为实体,并使用底层的 EntityManager 进行持久化或合并。 迭代器返回的空值将被忽略。spring-doc.cadn.net.cn

JPA 适配器现在具有额外的属性,用于在执行业务持久化操作后选择性地刷新和清除关联持久性上下文中的实体。spring-doc.cadn.net.cn

检索网关之前没有机制可以指定要检索的第一条记录,这是一个常见的使用场景。 现在,通过在网关定义中添加 first-resultfirst-result-expression 属性,检索网关支持指定此参数。 更多信息,请参阅 检索出站网关spring-doc.cadn.net.cn

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

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

延迟器:延迟表达式

此前,<delayer> 提供了一个 delay-header-name 属性用于在运行时确定延迟值。 在复杂情况下,<delayer> 前必须跟一个 <header-enricher>。 Spring Integration 3.0 引入了 expression 属性和 expression 子元素以实现动态延迟确定。 delay-header-name 属性现已弃用,因为您可以在 expression 中指定头部求值。 此外,我们引入了 ignore-expression-failures 来控制表达式求值失败时的行为。 更多信息,请参见 Delayerspring-doc.cadn.net.cn

JDBC 消息存储改进

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

IMAP 空闲连接异常

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

消息头与TCP

TCP 连接工厂现在支持配置一种灵活的机制,以便在 TCP 上传输选定的头部(以及有效负载)。 一个新的 TcpMessageMapper 用于启用头部的选择,并且您需要配置适当的序列化器或反序列化器,将生成的 Map 写入 TCP 流。 我们添加了一个 MapJsonSerializer,作为一种方便地在 TCP 上传输头部和有效负载的机制。 更多信息,请参阅 传输头部spring-doc.cadn.net.cn

JMS 消息驱动通道适配器

以前,在配置 <message-driven-channel-adapter/> 时,如果您希望使用特定的 TaskExecutor,则必须声明一个容器 bean,并通过设置 container 属性将其提供给适配器。 我们新增了 task-executor,允许直接在适配器上设置它。 此外,之前已有多个其他容器属性可用。spring-doc.cadn.net.cn

XsltPayloadTransformer

您现在可以通过设置 transformer-factory-class 属性来指定转换器工厂类名。 请参阅 XsltPayloadTransformerspring-doc.cadn.net.cn

2.1 与 2.2 版本之间的变更

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

新组件

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

RedisStore入站和出站通道适配器

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

MongoDB 入站和出站通道适配器

Spring Integration 现在提供了 MongoDB 的入站和出站通道适配器,允许您向 MongoDB 文档存储写入和读取 Message 负载。 更多信息,请参阅 MongoDB 出站通道适配器MongoDB 入站通道适配器spring-doc.cadn.net.cn

JPA 端点

Spring Integration 现已包含用于 Java 持久化 API (JPA) 的组件,用于检索和持久化 JPA 实体对象。 JPA 适配器包含以下组件:spring-doc.cadn.net.cn

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

常规变更

本节描述了从版本 2.1 到版本 2.2 的一般性变更。spring-doc.cadn.net.cn

Spring 3.1 默认使用

Spring Integration 现在使用 Spring 3.1。spring-doc.cadn.net.cn

为端点添加行为

向轮询器添加<advice-chain/>的功能已经存在了一段时间。 然而,此功能所引入的行为会影响整个集成流程。 它并未解决为单个端点添加(例如)重试机制的能力。 2.2 版本引入了将<request-handler-advice-chain/>连接到多个端点的功能。spring-doc.cadn.net.cn

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

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

事务同步与伪事务

轮询器现在可以参与 Spring 的事务同步功能。 这使得能够根据事务是提交还是回滚,来同步诸如通过入站通道适配器重命名文件等操作。spring-doc.cadn.net.cn

此外,当不存在“真实”事务时,您可以通过使用 PseudoTransactionManager 来启用这些功能。spring-doc.cadn.net.cn

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

文件适配器:改进了文件覆盖和追加处理

使用文件出站通道适配器或文件出站网关时,您可以使用一个新的mode属性。 在 Spring Integration 2.2 之前,如果目标文件已存在,则会被替换。 现在您可以指定以下选项:spring-doc.cadn.net.cn

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

为更多出站网关添加了回复超时

XML 命名空间支持为以下出站网关添加了 reply-timeout 属性:spring-doc.cadn.net.cn

Spring-AMQP 1.1

Spring Integration 现在使用 Spring AMQP 1.1。 这使以下功能可在 Spring Integration 应用程序中使用:spring-doc.cadn.net.cn

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

在使用 Spring Integration JDBC Adapter 的存储过程组件时,现在可以通过使用 Spring 表达式语言 (SpEL) 来提供存储过程名称或存储函数名称。spring-doc.cadn.net.cn

这样做允许您在运行时指定要调用的存储过程。 例如,您可以提供希望通过消息头执行的存储过程名称。 有关更多信息,请参见 存储过程spring-doc.cadn.net.cn

JMX 支持

存储过程组件现在提供基本的 JMX 支持,将其部分属性暴露为 MBean:spring-doc.cadn.net.cn

JDBC 支持:出站网关

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

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

我们新增了一种针对消息通道的特定消息存储实现,该实现使用数据库特定的 SQL 查询提供了更具可扩展性的解决方案。 更多信息,请参阅 后备消息通道spring-doc.cadn.net.cn

有序关闭

我们向IntegrationMBeanExporter添加了一个名为stopActiveComponents()的方法。 它允许Spring Integration应用程序以有序的方式关闭,禁止新的入站消息进入某些适配器,并等待一段时间以允许正在处理的消息完成。spring-doc.cadn.net.cn

JMS 出站网关改进

您现在可以配置 JMS 出站网关,使其使用 MessageListener 容器来接收回复。 这样做可以提高网关的性能。spring-doc.cadn.net.cn

ObjectToJsonTransformer

默认情况下,ObjectToJsonTransformer 现在将 content-type 头设置为 application/json。 有关更多信息,请参阅 转换器spring-doc.cadn.net.cn

HTTP 支持

通过 HTTP 进行 Java 序列化默认不再启用。 此前,当在 expected-response-type 对象上设置 Serializable 时,Accept 头部未能正确设置。 我们已更新 SerializingHttpMessageConverter,将 Accept 头部设置为 application/x-java-serialized-object。 然而,由于这可能导致与现有应用程序不兼容,我们决定不再自动将此转换器添加到 HTTP 端点。spring-doc.cadn.net.cn

如果您希望使用 Java 序列化,需要通过使用 message-converters 属性(在 XML 配置中)或 setMessageConverters() 方法(在 Java 中),将 SerializingHttpMessageConverter 添加到相应的端点。spring-doc.cadn.net.cn

或者,您可能希望考虑使用 JSON。 它通过在类路径中包含 Jackson 来启用。spring-doc.cadn.net.cn

2.0 与 2.1 版本之间的变更

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

新组件

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

JSR-223 脚本支持

在 Spring Integration 2.0 中,我们添加了对 Groovy 的支持。 随着 Spring Integration 2.1 的发布,我们通过实现 JSR-223("Java™ 平台的脚本功能")支持,大幅扩展了对其他语言的支持。 现在您能够使用任何支持 JSR-223 的脚本语言,包括:spring-doc.cadn.net.cn

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

AMQP 支持

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

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

MongoDB 支持

自2.1版本起,Spring Integration通过提供基于MongoDB的MessageStore支持MongoDBspring-doc.cadn.net.cn

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

Redis 支持

自 2.1 版本起,Spring Integration 通过提供基于 Redis 的MessageStore以及发布 - 订阅消息适配器,支持Redis这一高级键值存储。spring-doc.cadn.net.cn

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

对 Spring 的资源抽象的支持

在2.1版本中,我们引入了一种新的资源入站通道适配器,它基于Spring的资源抽象构建,以支持更广泛的底层资源类型(如文件、URL或类路径资源)的灵活性。 因此,它与文件入站通道适配器类似,但更加通用。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 资源入站通道适配器spring-doc.cadn.net.cn

存储过程组件

随着 Spring Integration 2.1 的发布,JDBC模块也通过添加多个新组件提供了存储过程支持,包括入站和出站通道适配器以及一个出站网关。 存储过程支持利用了 Spring 的SimpleJdbcCall类,因此支持以下存储过程:spring-doc.cadn.net.cn

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

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

XPath 和 XML 验证过滤器

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

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

有效负载增强器

自 Spring Integration 2.1 起,我们添加了负载增强器(payload enricher)。 负载增强器定义了一个端点,该端点通常将 Message 传递到暴露的请求通道,然后期望一个回复消息。 随后,该回复消息成为用于评估表达式以增强目标负载的根对象。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 负载丰富器spring-doc.cadn.net.cn

FTP 和 SFTP 出站网关

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

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

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

FTP 会话缓存

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

具体而言,我们已弃用 cache-sessions 属性(该属性可通过 XML 命名空间支持获得)。 作为替代方案,我们在 CachingSessionFactory 上添加了 sessionCacheSizesessionWaitTimeout 属性。spring-doc.cadn.net.cn

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

框架重构

我们以多种方式重构了 Spring Integration 框架,所有这些内容都在本节中描述。spring-doc.cadn.net.cn

标准化路由器配置

我们已在 Spring Integration 2.1 中统一了所有路由器实现的路由器参数,以提供更一致的用户体验。spring-doc.cadn.net.cn

在 Spring Integration 2.1 中,我们移除了 ignore-channel-name-resolution-failures 属性,转而将其行为与 resolution-required 属性合并。 此外,resolution-required 属性现在默认为 truespring-doc.cadn.net.cn

从 Spring Integration 2.1 开始,如果未定义默认输出通道,路由器将不再静默丢弃任何消息。 这意味着,默认情况下,路由器现在要求至少解析一个通道(如果未设置default-output-channel),并且如果没有确定通道(或发送尝试不成功),默认将抛出MessageDeliveryException异常。spring-doc.cadn.net.cn

然而,如果您确实希望静默丢弃消息,可以将值设置为 default-output-channel="nullChannel"spring-doc.cadn.net.cn

随着路由参数的标准化以及前述参数的整合,基于旧版 Spring Integration 的应用程序可能会出现故障。

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

XML Schemas updated to 2.1

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

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

以下示例声明了一个无版本的 Spring Integration 命名空间:spring-doc.cadn.net.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 Integration 命名空间:spring-doc.cadn.net.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.cadn.net.cn

源代码版本控制与构建基础设施

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

源代码现托管于 GitHub

自 2.0 版本起,Spring Integration 项目使用 Git 进行版本控制。 为了进一步提高社区的可见度,该项目已从 SpringSource 托管的 Git 仓库迁移至 Github。 Spring Integration 的 Git 仓库位于:spring-integrationspring-doc.cadn.net.cn

对于该项目,我们也改进了提供代码贡献的流程。 此外,我们确保每次提交都经过同行评审。 事实上,核心维护者现在也遵循与贡献者相同的流程。 更多详情,请参阅 贡献指南spring-doc.cadn.net.cn

使用 Sonar 提升源代码可见性

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

新示例

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

1.0 与 2.0 版本之间的变更

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

Spring 3 支持

Spring Integration 2.0 构建于 Spring 3.0.5 之上,并将其许多功能提供给我们的用户。spring-doc.cadn.net.cn

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

您现在可以在 Spring Integration 核心命名空间中的转换器、路由器、过滤器、拆分器、聚合器、服务激活器、头部增强器以及众多其他元素,以及各种适配器中使用 SpEL 表达式。 本指南包含许多示例。spring-doc.cadn.net.cn

转换服务和转换器

您现在可以在配置许多 Spring Integration 组件(例如 数据类型通道)时,利用 Spring 提供的转换服务支持。 请参阅 消息通道实现服务激活器。 此外,前一点中提到的 SpEL 支持也依赖于转换服务。 因此,您可以一次性注册转换器,并在任何使用 SpEL 表达式的地方利用它们。spring-doc.cadn.net.cn

TaskSchedulerTrigger

Spring 3.0 定义了两个与调度相关的新策略:TaskSchedulerTrigger。 Spring Integration(大量使用调度功能)现在基于这些策略构建。 事实上,Spring Integration 1.0 最初定义了一些组件(例如 CronTrigger),这些组件现已迁移至 Spring 3.0 的核心 API。 现在,您可以在整个应用上下文中复用相同的组件(而不仅限于 Spring Integration 配置)。 我们还通过提供用于直接配置速率、延迟、Cron 表达式和触发器引用的属性,极大地简化了 Spring Integration 轮询器的配置。 有关示例配置,请参阅 通道适配器spring-doc.cadn.net.cn

RestTemplateHttpMessageConverter

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

企业集成模式补充

此外,在 2.0 版本中,我们还增加了对 Hohpe 和 Woolf 所著《企业集成模式》一书中描述的更多模式的支持。spring-doc.cadn.net.cn

消息历史

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

消息存储

我们现在提供对消息存储模式的支持。 消息存储为任何范围超出单个事务的流程(例如聚合器和重排序器)提供了一种持久化消息的策略。 本指南的许多部分都包含了如何使用消息存储的示例,因为它影响 Spring Integration 的多个领域。 有关更多详细信息,请参阅消息存储检查点消息通道聚合器JDBC 支持以及重排序器spring-doc.cadn.net.cn

索赔检查

我们已添加对ticket模式的实现。 ticket模式的核心思想是将消息负载替换为一张“ticket”。 这使得在跨通道发送消息时能够减少带宽消耗并避免潜在的安全问题。 有关更多详细信息,请参阅ticket模式spring-doc.cadn.net.cn

控制总线

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

新通道适配器与网关

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

TCP 和 UDP 适配器

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

Twitter 适配器

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

XMPP 适配器

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

FTP 和 FTPS 适配器

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

SFTP适配器

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

Feed 适配器

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

其他新增内容

Spring Integration 添加了若干其他功能。 本节将描述这些功能。spring-doc.cadn.net.cn

Groovy 支持

Spring Integration 2.0 增加了对 Groovy 的支持,让您能够使用 Groovy 脚本语言来提供集成和业务逻辑。 有关更多详细信息,请参阅 Groovy 支持spring-doc.cadn.net.cn

Map 转换器

这些对称转换器将负载对象转换为 Map 对象,或从 Map 对象转换回来。 有关更多详细信息,请参见 Transformerspring-doc.cadn.net.cn

JSON 转换器

这些对称转换器用于在负载对象和 JSON 之间进行相互转换。 有关更多详细信息,请参阅 Transformerspring-doc.cadn.net.cn

序列化转换器

这些对称转换器将负载对象转换为字节数组,反之亦然。 它们还支持 Spring 3.0.5 添加的序列化和反序列化策略接口。 有关更多详细信息,请参阅 Transformerspring-doc.cadn.net.cn

框架重构

核心 API 经过重大重构,使其更简单、更易用。 尽管我们预计对开发者的影响应最小化,但仍建议您阅读本文档以了解具体变更内容。 特别是,您应该阅读 动态路由消息网关HTTP 出站组件消息 以及 聚合器。 如果您直接依赖某些核心组件(MessageMessageHeadersMessageChannelMessageBuilder 等),则需要更新任何导入语句。 我们对部分包结构进行了重组,以便在扩展领域模型时获得所需的灵活性,同时避免任何循环依赖(这是框架的一项政策:避免此类“纠缠”)。spring-doc.cadn.net.cn

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

随着 Spring Integration 2.0 的发布,我们将构建环境切换为使用 Git 进行版本控制。 要访问我们的代码仓库,请访问 https://git.springsource.org/spring-integration。 此外,我们也将构建系统切换到了 Gradlespring-doc.cadn.net.cn

新 Spring 集成示例

随着 Spring Integration 2.0 的发布,我们已将示例与主发行版分离。 请阅读以下博客以获取更多信息:新的 Spring Integration 示例。 我们还创建了许多新示例,包括每个新适配器的示例。spring-doc.cadn.net.cn

Spring Tool Suite Spring 集成可视化编辑器

最新的 SpringSource Tool Suite 版本中包含了令人惊叹的 Spring Integration 新可视化编辑器。 如果您尚未使用 STS,可以在 Spring Tool Suite 下载它。spring-doc.cadn.net.cn