更改历史

更改历史

5.5 和 6.0 之间的更改

新组件

添加了用于集成流定义的 Groovy DSL 实现。 有关更多信息,请参阅 Groovy DSLspring-doc.cadn.net.cn

MQTT 客户端管理器

新的 MQTTClientManager已添加以支持跨不同通道适配器的可重用 MQTT 连接。 有关更多信息,请参阅共享 MQTT 客户端支持spring-doc.cadn.net.cn

GraphQL 支持

添加了 GraphQL 支持。 有关更多信息,请参阅 GraphQL 支持spring-doc.cadn.net.cn

Apache Camel 支持

引入了对 Apache Camel 路由的支持。 有关更多信息,请参阅 Apache Camel 支持spring-doc.cadn.net.cn

Hazelcast 支持

Hazelcast Spring Integration Extensions 项目已迁移为spring-integration-hazelcast模块。 有关更多信息,请参阅 Hazelcast 支持spring-doc.cadn.net.cn

SMB 支持

Spring Integration Extensions 项目添加了 SMB 支持。 Java DSL(参见org.springframework.integration.smb.dsl.Smbfactory)也已添加到此模块中。 一SmbStreamingMessageSourceSmbOutboundGateway介绍了实现。 有关详细信息,请参阅 SMB 支持spring-doc.cadn.net.cn

PostgreSQL 推送通知

一个PostgresSubscribableChannel允许通过以下方式接收推送通知PostgresChannelMessageTableSubscriber在新消息添加时添加到JdbcChannelMessageStore.spring-doc.cadn.net.cn

有关更多信息,请参阅 PostgreSQL:接收推送通知spring-doc.cadn.net.cn

RabbitMQ 流队列支持

AMQP 模块已得到增强,可支持使用 RabbitMQ 流队列的入站和出站通道适配器。 有关更多信息,请参阅 RabbitMQ 流队列支持spring-doc.cadn.net.cn

阿帕奇 MINA SFTP

SFTP 模块已从过时的 JCraft JSch 库完全重新设计为更强大和现代org.apache.sshd:sshd-sftpApache MINA 项目的模块。spring-doc.cadn.net.cn

有关详细信息,请参阅 SFTP 适配器spring-doc.cadn.net.cn

千分尺观察

现在支持使用微分尺启用定时器和跟踪的观察。 有关更多信息,请参阅千分尺观察spring-doc.cadn.net.cn

GraalVM 多语言支持

脚本模块现在提供了一个PolyglotScriptExecutor基于 GraalVM 多语言支持的实现。 JavaScript 支持现在基于此执行器,因为它的 JSR223 实现已自行从 Java 中删除。 有关详细信息,请参阅脚本支持spring-doc.cadn.net.cn

Apache Cassandra 支持

Apache Cassandra Spring Integration Extensions 项目已迁移为spring-integration-cassandra模块。 有关详细信息,请参阅 Apache Cassandra 支持spring-doc.cadn.net.cn

Kotlin 协程

框架中引入了 Kotlin 协程支持。spring-doc.cadn.net.cn

有关更多信息,请参阅 Kotlin 协程spring-doc.cadn.net.cn

原生图像

支持创建 GraalVM 本机映像。 有关详细信息,请参阅本机映像支持spring-doc.cadn.net.cn

一般更改

消息传递注释现在是@Repeatable并且可以在同一服务方法上多次声明相同的类型。 消息传递注释不需要poller属性作为@Poller了。spring-doc.cadn.net.cn

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

为方便起见,用于 Scatter-Gather 的 XML 和 Java DSL 基于RecipientListRouter,现在将applySequence = true,因此收集器部分可以依赖默认的关联策略。spring-doc.cadn.net.cn

有关更多信息,请参阅分散收集spring-doc.cadn.net.cn

AbstractMappingMessageRouter. 现在,将defaultOutputChannel还会重置channelKeyFallback属性设置为false,因此不会尝试从其键解析通道,但逻辑会立即回退到将消息发送到defaultOutputChannel.spring-doc.cadn.net.cn

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

AggregatingMessageHandlernow 不会拆分Collection<Message<?>>结果MessageGroupProcessor(除非它是SimpleMessageGroupProcessor)的输出,但发出一条包含整个集合作为有效负载的消息。spring-doc.cadn.net.cn

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

IntegrationFlowsfactory 现在被标记为已弃用,以支持IntegrationFlow界面本身。 工厂类将在将来的版本中删除。spring-doc.cadn.net.cn

有关更多信息,请参阅 Java DSLspring-doc.cadn.net.cn

org.springframework.util.concurrent.ListenableFuture从 Spring Framework 开始已被弃用6.0. 所有 Spring Integration 异步 API 都已迁移到CompletableFuture.spring-doc.cadn.net.cn

消息网关接口方法现在可以返回Future<Void>Mono<Void>与下游流的适当异步执行。spring-doc.cadn.net.cn

旁边还有一个@MessagingGateway注释接口也可以用@Primary.spring-doc.cadn.net.cn

@MessagingGateway接口现在可以用作@Import用于配置的资源。spring-doc.cadn.net.cn

网关代理 Bean 的默认命名策略可以通过以下方式进行自定义@IntegrationComponentScan.nameGenerator()属性。 如果AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATORbean 存在,则在回退到AnnotationBeanNameGenerator.spring-doc.cadn.net.cn

有关详细信息,请参阅消息传递网关spring-doc.cadn.net.cn

integrationGlobalPropertiesbean 现在被框架声明为org.springframework.integration.context.IntegrationProperties而不是之前弃用的java.util.Properties.spring-doc.cadn.net.cn

生成集合作为回复的消息处理程序(例如JpaOutboundGateway,JdbcOutboundGateway和其他基于数据库的网关)现在,如果查询没有返回任何记录,则返回一个空的结果列表。 以前null返回时结束流或抛出异常,具体取决于requiresReply.spring-doc.cadn.net.cn

RMI 移除

spring-integration-rmi模块在以前的版本中被弃用后已被完全删除。 没有替代品:建议迁移到更安全的网络和应用程序协议,例如 WebSockets、RSockets、gRPC 或 REST。spring-doc.cadn.net.cn

GemFire 移除

spring-integration-gemfire模块已被完全删除,因为没有 Spring Data2022.0.0支持 VMware GemFire 或 Apache Geode。spring-doc.cadn.net.cn

HTTP 更改

#cookies表达式评估上下文的变量,在HttpRequestHandlingEndpointSupport,现在是一个MultiValueMap携带客户端设置的 cookie 的所有值。 有关更多信息,请参阅 HTTP 支持spring-doc.cadn.net.cn

Apache Kafka 更改

当提供RetryTemplate在入站网关或消息驱动通道适配器上,如果errorChannel还提供了一个ErrorMessageSendingRecoverer自动配置。spring-doc.cadn.net.cn

此外,新的KafkaErrorMessageSendingRecoverer提供;这可以与DefaultErrorHandler以避免长时间聚合重试延迟导致分区重新平衡的问题。spring-doc.cadn.net.cn

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

JDBC 更改

DefaultLockRepository现在可以提供PlatformTransactionManager而不是依赖应用程序上下文中的主 Bean。spring-doc.cadn.net.cn

有关更多信息,请参阅 JDBC 锁定注册表spring-doc.cadn.net.cn

TCP/IP 更改

lookupHost属性的AbstractConnectionFactoryDatagramPacketMessageMapper现在设置为false默认情况下,以避免在未配置 DNS 的环境中出现延迟。spring-doc.cadn.net.cn

有关详细信息,请参阅 TCP 和 UDP 支持spring-doc.cadn.net.cn

JMS 更改

JmsOutboundGateway现在会创建一个TemporaryTopic而不是TemporaryQueue如果replyPubSubDomain选项设置为true.spring-doc.cadn.net.cn

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

安全更改

ChannelSecurityInterceptor及其注释@SecuredChannel和 XML<secured-channels>配置已被弃用,取而代之的是AuthorizationChannelInterceptor.spring-doc.cadn.net.cn

有关详细信息,请参阅安全支持spring-doc.cadn.net.cn

Webflux 请求属性支持

添加了对 Web 客户端请求属性的支持WebFluxRequestExecutingMessageHandler.spring-doc.cadn.net.cn

有关更多信息,请参阅 WebFlux 请求属性spring-doc.cadn.net.cn

5.4 和 5.5 之间的更改

新组件

文件聚合器

一个FileSplitter.FileMaker-基于实现CorrelationStrategy,ReleaseStrategyMessageGroupProcessor作为FileAggregator组件被引入。 有关详细信息,请参阅 File Aggregatorspring-doc.cadn.net.cn

MQTT v5 支持

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

一般更改

所有执着的MessageGroupStore实现提供了一个streamMessagesForGroup(Object groupId)基于目标数据库流 API 的合约。 有关详细信息,请参阅消息存储spring-doc.cadn.net.cn

integrationGlobalPropertiesbean(如果声明)现在必须是org.springframework.integration.context.IntegrationProperties而不是java.util.Properties,该支持已弃用,以向后兼容。 这spring.integration.channels.error.requireSubscribers=trueglobal 属性的添加,以指示全局默认值errorChannel必须配置requireSubscribers选项(或不选项)。 这spring.integration.channels.error.ignoreFailures=trueglobal 属性的添加,以指示全局默认值errorChannel必须忽略(或不忽略)分派错误并将消息传递给下一个处理程序。 有关详细信息,请参阅全局属性。spring-doc.cadn.net.cn

AbstractPollingEndpoint(源轮询通道适配器和轮询使用者)处理maxMessagesPerPoll == 0跳过调用源。 稍后可以将其更改为不同的值,例如通过控制总线。 有关详细信息,请参阅轮询消费者。spring-doc.cadn.net.cn

ConsumerEndpointFactoryBean现在接受一个reactiveCustomizer Function到任何输入通道作为反应流源,并使用ReactiveStreamsConsumer下面。 这被涵盖为ConsumerEndpointSpec.reactive()选项,作为 Java DSL 中的@Reactive消息传递注释的嵌套注释。 有关更多信息,请参阅响应式流支持spring-doc.cadn.net.cn

groupTimeoutExpression对于相关消息处理程序(AggregatorResequencer) 现在可以计算为java.util.Date适用于一些细粒度的调度用例。 此外,BiFunction groupConditionSupplier选项添加到AbstractCorrelatingMessageHandler提供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 更改

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

Redis 更改

ReactiveRedisStreamMessageProducer现在有所有StreamReceiver.StreamReceiverOptionsBuilder选项,包括onErrorResume功能。 有关更多信息,请参阅 Redis 支持spring-doc.cadn.net.cn

HTTP 更改

HttpRequestExecutingMessageHandler不会回退到application/x-java-serialized-object内容类型,并允许RestTemplate根据HttpMessageConverter提供。 它现在还有一个extractResponseBody标志(即true默认情况下)仅返回响应正文,或返回整个ResponseEntity作为回复消息有效负载,独立于提供的expectedResponseType. 同样的选项也适用于WebFluxRequestExecutingMessageHandler太。 有关更多信息,请参阅 HTTP 支持spring-doc.cadn.net.cn

文件/FTP/SFTP 更改

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

FileInboundChannelAdapterSpec现在有一个方便的recursive(boolean)选项,而不是要求显式引用RecursiveDirectoryScanner.spring-doc.cadn.net.cn

remoteDirectoryExpression现在可以在mv为了方便起见,命令。spring-doc.cadn.net.cn

MongoDb 更改

MongoDbMessageSourceSpec被添加到 MongoDd Java DSL 中。 一update选项现在在MongoDbMessageSourceReactiveMongoDbMessageSource实现。spring-doc.cadn.net.cn

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

WebSockets 更改

基于ServerWebSocketContainer现在可以在运行时注册和删除。spring-doc.cadn.net.cn

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

JPA 更改

JpaOutboundGateway现在支持Iterable消息有效负载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

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

您现在可以访问Future<?>对于基础send()操作。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 支持的通道适配器。 有关详细信息,请参阅 Redis Stream 出站通道适配器spring-doc.cadn.net.cn

可续期锁注册表

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

ZeroMQ 支持

ZeroMqChannel,ZeroMqMessageHandlerZeroMqMessageProducer已被引入。 有关更多信息,请参阅 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

被千分尺仪取代的旧指标已被删除。spring-doc.cadn.net.cn

线程屏障现在有两个单独的超时选项:requestTimeouttriggerTimeout.spring-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引入了抽象来指示哪种企业集成模式(IntegrationPatternType)和 Spring Integration 组件所属的类别。 有关此抽象及其用例的更多信息,请参阅其 JavaDocs 和 Integration Graphspring-doc.cadn.net.cn

ReactiveMessageHandler

ReactiveMessageHandler现在在框架中原生支持。 有关详细信息,请参阅 ReactiveMessageHandlerspring-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

ReactiveRequestHandler建议

一个ReactiveRequestHandlerAdvice提供定制Mono来自消息处理程序的回复。 有关更多信息,请参阅反应性建议spring-doc.cadn.net.cn

HandleMessageAdviceAdapter

一个HandleMessageAdviceAdapter提供以包装任何MethodInterceptor用于申请MessageHandler.handleMessage()而不是默认值AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage()行为。 有关详细信息,请参阅处理消息通知spring-doc.cadn.net.cn

MongoDB 响应式通道适配器

spring-integration-mongodb模块现在为 Spring Data 中的 Reactive MongoDb 驱动程序支持提供通道适配器实现。 此外,MongoDb 更改流支持的响应式实现也存在于MongoDbChangeStreamMessageProducer. 有关更多信息,请参阅 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返回一个MessageMessageBuilder.popSequenceDetails()如果sequenceDetails匹配组第一封邮件中的标头。 有关详细信息,请参阅聚合器编程模型spring-doc.cadn.net.cn

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

Spring Integration 中的事务支持现在还包括用于配置ReactiveTransactionManager如果MessageSourceMessageHandler实现会生成一个响应式类型供有效负载发送。 看TransactionInterceptorBuilder了解更多信息。 另请参阅响应式事务。spring-doc.cadn.net.cn

一个新的intercept()运营商注册ChannelInterceptor未创建显式通道的实例被添加到 Java DSL 中。 有关更多信息,请参阅运算符 intercept()spring-doc.cadn.net.cn

MessageStoreSelector具有比较新旧值的新机制。 请参阅幂等接收方企业集成模式以获取更多信息。spring-doc.cadn.net.cn

MessageProducerSupport基类现在有一个subscribeToPublisher(Publisher<? extends Message<?>>)允许实现消息驱动的生产者端点,这些端点通过响应式发出消息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.EncodingModeJavaDocs 和 Controlling URI Encoding 了解更多信息。 这也会影响WebFluxRequestExecutingMessageHandler,分别是 Java DSL 和 XML 配置。 相同的选项被添加到AbstractWebServiceOutboundGateway.spring-doc.cadn.net.cn

Web 服务更改

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

TCP 更改

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

TcpOutboundGateway现在支持异步请求/回复。有关详细信息,请参阅 TCP 网关spring-doc.cadn.net.cn

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

RSocket 更改

一个decodeFluxAsUnit选项已添加到RSocketInboundGateway具有解码传入的含义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

(小)FTP 更改

FileTransferringMessageHandler(例如,对于 FTP 和 SFTP)除了File,byte[],StringInputStream现在还支持org.springframework.core.io.Resource. 有关详细信息,请参阅 SFTP 支持FTP 支持spring-doc.cadn.net.cn

文件更改

FileSplitter不再需要 Jackson 处理器(或类似)依赖项markersJson模式。 它使用SimpleJsonSerializer对于FileSplitter.FileMarker实例。 有关详细信息,请参阅 FileSplitterspring-doc.cadn.net.cn

5.1 和 5.2 之间的更改

包和类更改

Pausable已从o.s.i.endpointo.s.i.core.spring-doc.cadn.net.cn

行为变化

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

新组件

RSocket 支持

spring-integration-rsocket模块现在可用于通道适配器实现,以支持 RSocket 协议。 有关详细信息,请参阅 RSocket 支持spring-doc.cadn.net.cn

速率限制建议支持

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

缓存建议支持

CacheRequestHandlerAdvice现在可用于在处理程序上缓存请求结果。 有关更多信息,请参阅缓存建议spring-doc.cadn.net.cn

Kotlin 脚本支持

JSR223 脚本模块现在包括对 Kotlin 脚本的支持。 有关详细信息,请参阅脚本支持spring-doc.cadn.net.cn

助焊剂聚合器支持

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 Transformersspring-doc.cadn.net.cn

一般更改

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

splitter现在支持discardChannel配置选项。 有关更多信息,请参阅拆分器spring-doc.cadn.net.cn

控制总线现在可以处理Pausable(扩展Lifecycle)作。 请参阅控制总线以了解更多信息。spring-doc.cadn.net.cn

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

现在可以将出站通道适配器配置为阻止调用线程,直到收到发布者确认(确认)。 有关详细信息,请参阅出站通道适配器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而不是扩展IOException.spring-doc.cadn.net.cn

邮件更改

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

HTTP 更改

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

WebFlux 更改

WebFluxRequestExecutingMessageHandler现在支持Publisher,ResourceMultiValueMap作为请求消息payload. 这WebFluxInboundEndpoint现在支持请求有效负载验证。 有关更多信息,请参阅 WebFlux 支持spring-doc.cadn.net.cn

MongoDb 更改

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

路由器更改

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

FTP/SFTP 更改

RotatingServerAdvice现在与RotationPolicy及其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
改进的功能支持

java.util.function接口现在改进了框架组件中的集成支持。 此外,Kotlin lambda 现在可用于处理程序和源方法。spring-doc.cadn.net.cn

@LongRunningTest

一个 JUnit 5@LongRunningTest提供条件注释以检查RUN_LONG_INTEGRATION_TESTS条目,值为true以确定是否应运行或跳过测试。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集成流现在基于组件类型,以便可视化工具、日志分析器和指标收集器具有更好的可读性。spring-doc.cadn.net.cn

GenericHandler.handle()现在除了MessageHeaderstype 为第二个参数。spring-doc.cadn.net.cn

调度程序异常

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

  • 一个MessagingException任何类型的failedMessage属性被重新抛出,原封不动。spring-doc.cadn.net.cn

  • 所有其他异常都包装在MessageDeliveryException使用failedMessage属性集。spring-doc.cadn.net.cn

全球通道拦截器

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

通道拦截器

ChannelInterceptor.postReceive()当没有收到消息时,不再调用;不再需要检查null Message<?>. 以前,调用了该方法。 如果你有一个依赖于先前行为的拦截器,请实现afterReceiveCompleted()相反,由于调用了该方法,因此无论是否收到消息。 此外,PolledAmqpChannelPolledJmsChannel以前没有调用afterReceiveCompleted()null;他们现在做到了。spring-doc.cadn.net.cn

ObjectToJsonTransformer

一个新的ResultType.BYTES模式为ObjectToJsonTransformer.spring-doc.cadn.net.cn

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

集成流:生成的 Bean 名称

从版本 5.0.5 开始,为IntegrationFlow包括 Flow Bean 名称,后跟一个点作为前缀。 例如,如果流 Bean 的名称为flowBean,生成的 Bean 可能被命名为flowBean.generatedBean.spring-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 版开始,您必须显式启用@PublisherAOP 功能,使用@EnablePublisher或使用<int:enable-publisher>child 元素<int:annotation-config>. 此外,proxy-target-classorder已添加用于调整ProxyFactory配置。spring-doc.cadn.net.cn

文件更改

如果您正在使用FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSH你可以提供一个newFileCallback将在创建新文件时调用。 此回调接收新创建的文件和触发回调的消息。 例如,这可用于编写 CSV 标头。spring-doc.cadn.net.cn

FileReadingMessageSourcenow 不会检查和创建目录,直到其start()被称为。 因此,如果FileReadingMessageSourceautoStartup = false,则在应用程序启动期间没有针对文件系统的故障。spring-doc.cadn.net.cn

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

AMQP 更改

我们已经使IDTimestamp标头映射更改DefaultAmqpHeaderMapper. 有关详细信息,请参阅 AMQP 消息头底部附近的注释。spring-doc.cadn.net.cn

contentTypeheader 现在已正确映射为常规标头映射中的条目。 有关详细信息,请参阅 contentType 标头spring-doc.cadn.net.cn

从版本 5.1.3 开始,如果在使用手动确认时发生消息转换异常,并且定义了错误通道,则有效负载是ManualAckListenerExecutionFailedException加上channeldeliveryTag性能。 这使错误流能够确认/nack原始消息。 有关详细信息,请参阅入站消息转换spring-doc.cadn.net.cn

JDBC 更改

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

JdbcMessageHandler现在支持batchUpdate当请求消息的有效负载是Iterable类型。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

CachingSessionFactory有一个新属性testSession当 true 时,会导致工厂执行test()Session从缓存中签出现有会话时。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 支持

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

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

HTTP/WebFlux 支持

statusCodeExpression(和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

千分尺支架变更

现在,自定义框架创建的标准千分尺仪表更加简单。有关更多信息,请参阅千分尺集成。spring-doc.cadn.net.cn

集成图自定义

现在可以向IntegrationNode通过Function<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationGraphServer. 有关更多信息,请参阅集成图spring-doc.cadn.net.cn

集成全局属性

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

receiveTimeout@Poller

@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 Integration 测试框架来帮助测试 Spring Integration 应用程序。 现在,使用@SpringIntegrationTest测试类上的注释和MockIntegrationfactory,您可以使集成流的 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基于服务方法调用的基础设施,我们可以执行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 元数据存储

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

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

一般更改

Spring Integration 现在完全基于 Spring Framework5.0和反应堆项目3.1. 不再支持以前的 Project Reactor 版本。spring-doc.cadn.net.cn

核心变更

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

所有请求-回复端点(基于AbstractReplyProducingMessageHandler) 现在可以启动事务,因此使整个下游流成为事务性。 有关更多信息,请参阅事务支持spring-doc.cadn.net.cn

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

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

当将 POJO 方法作为消息处理程序时,您现在可以使用@Default注释,为不匹配的条件提供回退机制。 有关详细信息,请参阅配置服务激活器spring-doc.cadn.net.cn

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

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

您现在可以提供ObjectToMapTransformer与定制的JsonObjectMapper.spring-doc.cadn.net.cn

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

当候选者未能获取锁时,LockRegistryLeaderInitiator现在会发出新的OnFailedToAcquireMutexEvent通过DefaultLeaderEventPublisher. 看Leadership Event Handling了解更多信息。spring-doc.cadn.net.cn

网关更改

当网关方法具有void返回类型并提供错误通道,网关现在可以正确地将errorChannel页眉。 以前,未填充标头。 这导致同步下游流(在调用线程上运行)将异常发送到配置的通道,但异步下游流上的异常将发送到默认的errorChannel相反。spring-doc.cadn.net.cn

RequestReplyExchanger界面现在有一个throws MessagingException子句来满足拟议的消息交换合同。spring-doc.cadn.net.cn

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

聚合器性能更改

默认情况下,聚合器现在使用SimpleSequenceSizeReleaseStrategy,效率更高,尤其是对于大型团体。 现在,空组计划在以下之后删除empty-group-min-timeout. 有关详细信息,请参阅聚合器spring-doc.cadn.net.cn

分路器更改

拆分器组件现在可以处理和拆分 JavaStream和反应流Publisher对象。 如果输出通道是ReactiveStreamsSubscribableChannelAbstractMessageSplitter构建一个Flux用于后续迭代,而不是常规Iterator,与被拆分的对象无关。 另外AbstractMessageSplitter提供protected obtainSizeIfPossible()允许确定大小的方法IterableIterator对象,如果可能的话。 有关更多信息,请参阅拆分器spring-doc.cadn.net.cn

JMS 更改

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

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

邮件更改

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

提要更改

而不是com.rometools.fetcher.FeedFetcher,这在 ROME 中已被弃用,我们引入了一个新的Resource属性的FeedEntryMessageSource. 有关详细信息,请参阅 Feed Adapterspring-doc.cadn.net.cn

文件更改

我们推出了新的FileHeaders.RELATIVE_PATH消息头表示FileReadingMessageSource.spring-doc.cadn.net.cn

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

flush 谓词FileWritingMessageHandler现在有一个额外的参数。spring-doc.cadn.net.cn

文件出站通道适配器和网关 (FileWritingMessageHandler) 现在支持REPLACE_IF_MODIFIED FileExistsMode.spring-doc.cadn.net.cn

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

一个新的FileSystemMarkerFilePresentFileListFilter现已推出。 有关详细信息,请参阅处理不完整的数据spring-doc.cadn.net.cn

FileSplitter现在提供一个firstLineAsHeader选项,将第一行内容作为其余行发出的邮件的标头。spring-doc.cadn.net.cn

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

FTP 和 SFTP 更改

入站通道适配器现在具有名为max-fetch-size,用于限制在本地目录中当前没有文件时轮询期间获取的文件数。 默认情况下,它们还配置了FileSystemPersistentAcceptOnceFileListFilterlocal-filter.spring-doc.cadn.net.cn

您还可以提供自定义DirectoryScanner通过设置新引入的scanner属性。spring-doc.cadn.net.cn

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

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

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

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

FTP 和 SFTP 出站通道适配器(以及PUT命令)现在支持InputStreampayload太。spring-doc.cadn.net.cn

入站通道适配器现在可以使用新引入的RecursiveDirectoryScanner. 请参阅scannerFTP Inbound Channel Adapter 部分中的选项。 此外,您现在可以将这些适配器切换到WatchService相反。spring-doc.cadn.net.cn

我们添加了NLST命令设置为AbstractRemoteFileOutboundGateway执行 list files names 远程命令。spring-doc.cadn.net.cn

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

RemoteFileTemplate现在随invoke(OperationsCallback<F, T> action)执行多个RemoteFileOperations调用相同的、线程绑定的、Session.spring-doc.cadn.net.cn

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

FtpOutboundGatewaySftpOutboundGateway现在支持在成功传输后使用GETMGET命令。spring-doc.cadn.net.cn

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

集成属性

版本 4.3.2 添加了一个新的spring.integration.readOnly.headersglobal 属性,用于自定义不应复制到新创建的标头列表Message通过MessageBuilder. 有关详细信息,请参阅全局属性。spring-doc.cadn.net.cn

流更改

我们在CharacterStreamReadingMessageSource让它用于“管道”标准并在管道关闭时发布应用程序事件。 有关详细信息,请参阅从流读取spring-doc.cadn.net.cn

屏障变化

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

AMQP 更改

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

入站端点现在支持 Spring AMQPDirectMessageListenerContainer.spring-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_TOPIC,RECEIVED_QOSRECEIVED_RETAINED标头,以避免在应用程序中继消息时无意中传播到出站消息。spring-doc.cadn.net.cn

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

STOMP 更改

我们将 STOMP 模块更改为ReactorNettyTcpStompClient,基于 Project Reactor3.1reactor-netty外延。 我们重命名Reactor2TcpStompSessionManagerReactorNettyTcpStompSessionManager,根据ReactorNettyTcpStompClient基础。 有关更多信息,请参阅 STOMP 支持spring-doc.cadn.net.cn

Web 服务更改

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

DefaultSoapHeaderMapper现在可以映射一个javax.xml.transform.Sourceuser-defined header 添加到 SOAP 标头元素。spring-doc.cadn.net.cn

Simple WebService 入站和出站网关现在可以处理完整的WebServiceMessage作为payload,允许作 MTOM 附件。spring-doc.cadn.net.cn

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

Redis 更改

RedisStoreWritingMessageHandler现在提供额外的String基于 SpEL 表达式的 setter(为了方便 Java 配置)。 您现在可以配置zsetIncrementExpressionRedisStoreWritingMessageHandler也。 此外,此属性已从truefalse由于INCR选项ZADDRedis 命令是可选的。spring-doc.cadn.net.cn

您现在可以提供RedisInboundChannelAdapter使用Executor用于执行 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实例,让反序列化器在“预读”后“未读”(回推)字节。spring-doc.cadn.net.cn

我们添加了一个ByteArrayElasticRawDeserializer没有maxMessageSize根据需要控制和缓冲传入数据。spring-doc.cadn.net.cn

有关详细信息,请参阅 TCP 和 UDP 支持spring-doc.cadn.net.cn

JDBC 更改

JdbcMessageChannelStore现在为ChannelMessageStorePreparedStatementSetter,允许您在商店中自定义消息插入。spring-doc.cadn.net.cn

ExpressionEvaluatingSqlParameterSourceFactory现在为sqlParameterTypes,允许您自定义参数的 SQL 类型。spring-doc.cadn.net.cn

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

指标更改

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

对千分尺进行了更改Meters在 5.0.3 版本中,使它们更适合在维度系统中使用。 在 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允许控制MessageGroup实例中的实例MessageGroupStore逻辑。 我们添加了SimpleMessageGroupFactory实现SimpleMessageGroup,替换为GroupType.HASH_SET作为默认值 工厂为标准MessageGroupStore实现。 有关详细信息,请参阅消息存储spring-doc.cadn.net.cn

PersistentMessageGroup

我们添加了PersistentMessageGroup(延迟加载代理)实现MessageGroupStore实例 返回此实例的getMessageGroup()当他们的lazyLoadMessageGroupstrue(默认值)。 有关详细信息,请参阅消息存储spring-doc.cadn.net.cn

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

我们添加了返回InputStream对于每个文件,允许您检索远程文件而无需将它们写入本地文件系统。 有关详细信息,请参阅 FTP 流式入站通道适配器SFTP 流式入站通道适配器spring-doc.cadn.net.cn

StreamTransformer

我们添加了StreamTransformerInputStream有效负载到byte[]String. 有关详细信息,请参阅流转换器spring-doc.cadn.net.cn

积分图

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

JDBC 锁注册表

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

LeaderInitiatorLockRegistry

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

一般更改

本节介绍 4.3 版为 Spring Integration 带来的一般更改。spring-doc.cadn.net.cn

核心变更

本节描述对 Spring Integration 核心的一般更改。spring-doc.cadn.net.cn

链中的出站网关

以前,您可以指定reply-channel在链中的出站网关上。 它完全被忽视了。 网关的回复转到下一个链元素,或者,如果网关是最后一个元素,则转到链的输出通道。 现在检测到并禁止这种情况。 如果您有这样的配置,请删除reply-channel.spring-doc.cadn.net.cn

异步服务激活器

我们添加了一个选项,使服务激活器是同步的。有关详细信息,请参阅异步服务激活器spring-doc.cadn.net.cn

消息注释支持更改

消息传递注释支持不需要@MessageEndpoint(或任何其他@Component) 类级别的注释声明。要恢复以前的行为,请将spring.integration.messagingAnnotations.require.componentAnnotationspring.integration.propertiestrue. 有关详细信息,请参阅全局属性注释支持spring-doc.cadn.net.cn

邮件更改

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

可自定义的用户标志

可定制的userFlag(在 4.2.2 中添加,以提供用于表示邮件已被seen 的标志的自定义)现在在 XML 命名空间中可用。 看在以下情况下标记 IMAP 消息\Recent不支持了解更多信息。spring-doc.cadn.net.cn

邮件消息映射

您现在可以使用MessageHeaders包含邮件标头和包含电子邮件内容的有效负载。以前,有效负载始终是原始的MimeMessage. 有关详细信息,请参阅入站邮件消息映射spring-doc.cadn.net.cn

JMS 更改

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

标头映射器

DefaultJmsHeaderMapper现在映射标准correlationIdheader 作为消息属性,方法是调用其toString()方法。 有关详细信息,请参阅将消息头映射到 JMS 消息或映射 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 消息映射器

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

文件更改

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

目标目录创建

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

FileReadingMessageSource现在隐藏WatchService内部类中的目录扫描逻辑。 我们添加了use-watch-servicewatch-events选项来启用此行为。 我们弃用了顶级WatchServiceDirectoryScanner因为 API 不一致。 看WatchServiceDirectoryScanner了解更多信息。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-typeheader,则忽略正文。 在此版本中,此类请求的内容类型被视为application/octet-stream按建议 通过 RFC 2616。 有关更多信息,请参阅 Http 入站组件spring-doc.cadn.net.cn

uriVariablesExpression现在使用SimpleEvaluationContext默认情况下(自 4.3.15 起)。 有关详细信息,请参阅映射 URI 变量spring-doc.cadn.net.cn

SFTP 更改

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

工厂豆

我们添加了一个新的工厂 Bean 来简化 SFTP 的 Jsch 代理的配置。 看JschProxyFactoryBean了解更多信息。spring-doc.cadn.net.cn

chmod变化

SFTP 出站网关(对于putmput命令),SFTP 出站通道适配器现在支持chmod属性,在上传后更改远程文件权限。 看SFTP Outbound Channel AdapterSFTP Outbound Gateway了解更多信息。spring-doc.cadn.net.cn

FTP 更改

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

会话更改

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

路由器更改

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 配置spring-doc.cadn.net.cn

@InboundChannelAdapter变化

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

XMPP 更改

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

窃听后期绑定

WireTap ChannelInterceptor现在可以接受一个channelName解析为目标MessageChannel后来,在第一次主动拦截器行动中。 有关更多信息,请参阅窃听。spring-doc.cadn.net.cn

ChannelMessageStoreQueryProvider变化

ChannelMessageStoreQueryProvider现在支持 H2 数据库。 有关详细信息,请参阅支持消息通道。spring-doc.cadn.net.cn

WebSocket 更改

ServerWebSocketContainer现在公开一个allowedOrigins选项,以及SockJsServiceOptions公开一个suppressCors选择。 有关更多信息,请参阅 WebSockets 支持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:Namespace。 有关更多信息,请参阅文件拆分器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

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

消息 PreparedStatement Setter

一个新的MessagePreparedStatementSetter函数式接口回调可用于JdbcMessageHandler (<int-jdbc:outbound-gateway><int-jdbc:outbound-channel-adapter>) 作为使用SqlParameterSourceFactory以填充PreparedStatement使用requestMessage上下文。 有关详细信息,请参阅出站通道适配器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

追加新行

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

忽略隐藏文件

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

写作InputStream负载

FileWritingMessageHandler现在也接受InputStream作为有效的消息有效负载类型。spring-doc.cadn.net.cn

HeadDirectoryScanner

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

上次修改过滤器

我们添加了LastModifiedFileListFilter.spring-doc.cadn.net.cn

监视服务目录扫描程序

我们添加了WatchServiceDirectoryScanner.spring-doc.cadn.net.cn

持久文件列表过滤器更改

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

班级套餐更改

我们移动了ScatterGatherHandler类从org.springframework.integration.handlerorg.springframework.integration.scattergather.spring-doc.cadn.net.cn

TCP 更改

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

TCP 序列化程序

The TCPSerializers不再flush()OutputStream. 现在,这由TcpNxxConnection类。 如果直接在代码中使用序列化程序,则可能必须flush()OutputStream.spring-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 网关远程超时

TcpOutboundGateway现在支持remote-timeout-expression作为现有remote-timeout属性。 这允许根据每条消息设置超时。spring-doc.cadn.net.cn

此外,remote-timeout不再默认为与reply-timeout,这具有完全不同的含义。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(无穷大)。 这与 XML 配置不一致<inbound-channel-adapter/>,默认为1. 注释现在将此属性默认为1.spring-doc.cadn.net.cn

API 更改

o.s.integration.util.FunctionIterator现在需要一个o.s.integration.util.Function而不是reactor.function.Function. 这样做是为了消除对 Reactor 不必要的硬依赖。 此迭代器的任何使用都需要更改导入。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使用此容器时,以避免消息丢失。 此默认值现在适用于消息驱动的入站适配器和入站网关。 它已经是 JMS 支持的通道的默认值。spring-doc.cadn.net.cn

共享订阅

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

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

条件轮询器

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

AMQP 更改

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

发布商确认

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

相关数据

对于出站通道适配器和入站网关,如果关联数据是Message<?>,它成为 ack 或 nack 通道上消息的基础,并添加了其他标头。 以前,任何相关数据(包括Message<?>) 作为 ACK 或 NACK 消息的有效负载返回。spring-doc.cadn.net.cn

入站网关属性

<int-amqp:inbound-gateway>现在公开amqp-template属性,以允许对回复的外部 Bean 进行更多控制RabbitTemplate. 您也可以提供自己的AmqpTemplate实现。 此外,您可以使用default-reply-to如果请求消息没有replyTo财产。spring-doc.cadn.net.cn

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

XPath Splitter 改进

XPathMessageSplitter (<int-xml:xpath-splitter>) 现在允许配置output-properties用于内部javax.xml.transform.Transformer并支持Iteratormode(默认为true) 用于 XPath 评估org.w3c.dom.NodeList结果。spring-doc.cadn.net.cn

有关详细信息,请参阅拆分 XML 消息。spring-doc.cadn.net.cn

HTTP 更改

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

CORS

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

入站网关超时

您可以配置 HTTP 入站门方式,以便在请求超时时返回您指定的状态代码。 默认值为现在500 Internal Server Error而不是200 OK.spring-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<?>. 看CompletableFuture了解更多信息。spring-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或 inner bean 中,您现在可以直接绑定MessageGroupProcessor. 此外,我们还添加了一个SimpleMessageGroupProcessor返回组中的消息集合。 当输出处理器生成Message<?>,聚合器会单独释放这些消息。 配置SimpleMessageGroupProcessor使聚合器成为消息屏障,其中消息被保留,直到它们全部到达,然后单独释放。 有关详细信息,请参阅聚合器spring-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

默认 Sftp 会话工厂

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

工厂现在需要配置的knownHosts,除非allowUnknownKeys属性是true(默认值:false).spring-doc.cadn.net.cn

消息会话回调

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

Websocket 更改

我们添加了WebSocketHandlerDecoratorFactory支持ServerWebSocketContainer允许对内部WebSocketHandler. 有关详细信息,请参阅 WebSockets 命名空间支持spring-doc.cadn.net.cn

应用程序事件适配器更改

ApplicationEvent适配器现在可以与payload作为event直接允许省略自定义ApplicationEvent扩展。 为此,我们引入了publish-payloadboolean 属性已引入<int-event:outbound-channel-adapter>. 看SpringApplicationEvent支持了解更多信息。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<?>网关

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

WebSocket 支持

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

分散-聚集企业集成模式

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

布线滑移模式

我们添加了路由单 EIP 模式实现。有关详细信息,请参阅路由单spring-doc.cadn.net.cn

幂等接收器模式

我们通过添加<idempotent-receiver>组件或IdempotentReceiverInterceptorIdempotentReceiverJava 配置的注释。有关更多信息,请参阅幂等接收方企业集成模式和 Javadocspring-doc.cadn.net.cn

福音JsonObjectMapper

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

Redis 队列网关

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

PollSkipAdvice

我们添加了PollSkipAdvice,您可以在<advice-chain><poller>确定当前轮询是否应被您实现的某些条件禁止(跳过)PollSkipStrategy. 有关更多信息,请参阅轮询器spring-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 服务出站网关:encode-uri

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

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

<http:inbound-channel-adapter>现在可以使用status-code-expression以覆盖默认值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作为生成输出消息的结果对象。 有关更多信息,请参阅拆分器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属性,该属性用于处理错误流,如果Exception发生在request-channel. 这允许您返回用于扩充的替代对象。 有关更多信息,请参阅内容丰富器spring-doc.cadn.net.cn

标头通道注册表

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

有序关机

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

管理RecipientListRouter

RecipientListRouter现在提供多种管理作,用于在运行时配置收件人。 这样,您现在可以配置<recipient-list-router>没有任何<recipient>从一开始。 看RecipientListRouterManagement了解更多信息。spring-doc.cadn.net.cn

AbstractHeaderMapper:NON_STANDARD_HEADERSTokens

AbstractHeaderMapper实现现在提供了额外的NON_STANDARD_HEADERStoken 来映射任何用户定义的标头,默认情况下不会映射这些标头。 有关详细信息,请参阅 AMQP 消息标头spring-doc.cadn.net.cn

AMQP 通道:template-channel-transacted

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

系统日志适配器

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

异步网关

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

聚合商建议链

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

出站通道适配器和脚本

<int:outbound-channel-adapter/>现在支持<script/>child 元素。 基础脚本必须有一个void返回类型或返回null. 请参阅 Groovy 支持脚本支持spring-doc.cadn.net.cn

重排序器更改

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

可选的 POJO 方法参数

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

QueueChannel支持的队列类型

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

ChannelInterceptor变化

ChannelInterceptor现在支持其他afterSendCompletion()afterReceiveCompletion()方法。 请参阅通道拦截器spring-doc.cadn.net.cn

IMAP 窥视

从 4.1.1 版本开始,如果显式将mail.[protocol].peekJavaMail 属性设置为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-doc.cadn.net.cn

@IntegrationComponentScan

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

“@EnableMessageHistory”

您现在可以使用@EnableMessageHistory注释@Configuration类。 此外,JMX MBean 可以修改消息历史记录设置。 也MessageHistory可以跟踪自动创建的MessageHandler带注释的端点的实例(例如@ServiceActivator,@Splitter等)。 有关详细信息,请参阅消息历史记录spring-doc.cadn.net.cn

@MessagingGateway

您现在可以使用@MessagingGateway注解。 它是<int:gateway/>XML 元素。 有关更多信息,请参阅@MessagingGateway注解.spring-doc.cadn.net.cn

弹簧靴@EnableAutoConfiguration

以及@EnableIntegration注释之前提到的,我们引入了一个钩子,允许使用 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注释以允许指定default-publisher-channel@Publisher附注。 有关更多信息,请参阅注释支持spring-doc.cadn.net.cn

Redis 通道消息存储

我们添加了一个 RedisMessageGroupStore针对支持QueueChannel以实现持久性。有关更多信息,请参阅 Redis 通道消息存储spring-doc.cadn.net.cn

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

MongodDB 通道消息存储

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

@EnableIntegrationMBeanExport

您现在可以启用IntegrationMBeanExporter使用@EnableIntegrationMBeanExport注释@Configuration类。 有关更多信息,请参阅 MBean 导出器spring-doc.cadn.net.cn

ChannelSecurityInterceptorFactoryBean

ChannelSecurityInterceptorFactoryBean现在支持为使用@Configuration类。 有关更多信息,请参阅 Spring Integration 中的安全性spring-doc.cadn.net.cn

Redis 命令网关

Redis 支持现在提供<outbound-gateway>组件,使用RedisConnection#execute方法。 更多信息,请参见Redis出站命令网关spring-doc.cadn.net.cn

RedisLockRegistry

RedisLockRegistry现在可用于支持对多个应用程序实例和服务器可见的全局锁。 这些可以与跨多个应用程序实例聚合消息处理程序一起使用,以便组释放仅发生在一个实例上。 有关详细信息,请参阅 Redis 锁注册表聚合器spring-doc.cadn.net.cn

@Poller

基于注释的消息传递配置现在可以有一个poller属性。 这意味着用@ServiceActivator,@Aggregator,类似的注释现在可以使用inputChannel这是对PollableChannel. 有关详细信息,请参阅注释支持spring-doc.cadn.net.cn

@InboundChannelAdapterSmartLifecycle用于带注释的端点

我们添加了@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类。 有关详细信息,请参阅注释支持spring-doc.cadn.net.cn

元消息注释

消息传递注释 (@ServiceActivator,@Router,@MessagingGateway等)现在可以配置为用户定义消息传递注释的元注释。 此外,用户定义的注释可以具有相同的属性 (inputChannel,@Poller,autoStartup等)。 有关详细信息,请参阅注释支持spring-doc.cadn.net.cn

一般更改

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

需要 Spring Framework 4.0

我们移动了核心消息抽象(Message,MessageChannel等)添加到 Spring Frameworkspring-messaging模块。 直接在其代码中引用这些类的开发人员需要进行更改,如 3.0 到 4.0 迁移指南的第一部分中所述。spring-doc.cadn.net.cn

XPath 标头扩充器的标头类型

我们引入了header-type属性的headerchild 元素的<int-xml:xpath-header-enricher>. 此属性提供标头值的目标类型(XPath 表达式计算结果将转换为标头值)。 有关详细信息,请参阅 XPath 标头扩充器spring-doc.cadn.net.cn

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

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

JMS 标头映射

DefaultJmsHeaderMapper现在映射传入的JMSPrioritySpring 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,这是不正确的并且不起作用。 不再允许此值。 请参阅入站通道适配器spring-doc.cadn.net.cn

数据类型通道

您现在可以指定一个MessageConverter在将有效负载(如有必要)转换为可接受的负载之一时使用datatype实例。 有关详细信息,请参阅数据类型通道配置spring-doc.cadn.net.cn

更简单的重试建议配置

我们添加了简化的命名空间支持,以配置RequestHandlerRetryAdvice. 有关详细信息,请参阅配置重试建议spring-doc.cadn.net.cn

相关性终结点:基于时间的发布策略

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

Redis 元数据存储

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 超时

DefaultFtpSessionFactory现在公开connectTimeout,defaultTimeoutdataTimeout属性,避免了对工厂进行子类化来设置这些公共属性。 这postProcess*方法仍然可用于更高级的配置。 有关更多信息,请参阅 FTP 会话工厂。spring-doc.cadn.net.cn

唽:StatusUpdatingMessageHandler

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

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

TCP 反序列化事件

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

消息传递注释@Bean定义

您现在可以配置消息传递注释 (@ServiceActivator,@Router,@InboundChannelAdapter等)@Bean中的定义@Configuration类。 有关详细信息,请参阅注释支持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,以integrationRequestMappingHandlerMapping在应用程序上下文中。 解析 HTTP 入站端点时,新的IntegrationRequestMappingHandlerMappingBean 已注册或现有 Bean 被重用。 为了实现灵活的请求映射配置,Spring Integration 提供了<request-mapping/>child 元素的<http:inbound-channel-adapter/><http:inbound-gateway/>. 现在,两个 HTTP 入站端点都完全基于 Spring MVC 3.1 中引入的请求映射基础设施。 例如,单个入站终结点支持多个路径。 有关详细信息,请参阅 HTTP 命名空间支持spring-doc.cadn.net.cn

Spring 表达式语言 (SpEL) 配置

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

SpEL 函数支持

自定义 SpELEvaluationContext带静态Method函数,我们引入了<spel-function/>元件。 我们还添加了两个内置函数:#jsonPath#xpath. 有关详细信息,请参阅 SpEL 函数spring-doc.cadn.net.cn

SpEL PropertyAccessors 支持

自定义 SpELEvaluationContextPropertyAccessor实现时,我们添加了<spel-property-accessors/>元件。 有关详细信息,请参阅属性访问器spring-doc.cadn.net.cn

Redis:新组件

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

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

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

标头通道注册表

现在,您可以指示框架将回复通道和错误通道存储在注册表中,以便以后解决。 这对于以下情况很有用replyChannelerrorChannel可能会丢失(例如,在序列化消息时)。 有关详细信息,请参阅标头扩充器spring-doc.cadn.net.cn

MongoDB 支持:新增ConfigurableMongoDbMessageStore

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

系统日志支持

基于 2.2SyslogToMapTransformer,Spring Integration 3.0 引入UDPTCP专为接收 SYSLOG 消息而定制的入站通道适配器。 有关详细信息,请参阅 Syslog 支持spring-doc.cadn.net.cn

tail支持

我们添加了文件入站通道适配器,这些适配器使用tail命令在将行添加到文本文件末尾时生成消息。 参见“尾部”文件spring-doc.cadn.net.cn

JMX 支持

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

IntegrationMBeanExporter现在允许配置自定义ObjectNamingStrategy通过使用naming-strategy属性。spring-doc.cadn.net.cn

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

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

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

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

此外,我们还添加了<int-ip:tcp-connection-event-inbound-channel-adapter/>. 默认情况下,此适配器将所有TcpConnectionEventinstances 到Channel.spring-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

入站通道适配器脚本支持

<int:inbound-channel-adapter/>现在支持使用<expression/><script/>child 元素创建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

GatewayMethodMetadata现在是一个公共课程。 它允许您以编程方式配置GatewayProxyFactoryBean来自爪哇。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-SinceHTTP 标头:以前,If-Modified-SinceIf-Unmodified-SinceHTTP 标头在映射在DefaultHttpHeaderMapper. 现在,除了纠正这个问题之外,DefaultHttpHeaderMapper为任何接受日期时间值的 HTTP 标头提供格式化字符串的日期解析。spring-doc.cadn.net.cn

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

  • 出站端点 'uri-variables-expression':HTTP 出站端点现在支持uri-variables-expression属性来指定Expression要评估Map对于 URL 模板中的所有 URI 变量占位符。 这允许根据传出消息选择不同的表达式映射。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

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

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

链元素id属性

以前,id属性<chain>被忽视,在某些情况下,甚至被禁止。 现在,id属性允许用于<chain>. 链元素的 bean 名称是周围链的idid元素本身。 例如:“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

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

新增功能FileListFilter使用 persistentMetadataStore现已上市。 您可以使用这些来防止系统重新启动后出现重复文件。 有关更多信息,请参阅读取文件FTP 入站通道适配器SFTP 入站通道适配器spring-doc.cadn.net.cn

脚本支持:变量更改

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

直接通道负载平衡配置

以前,在配置LoadBalancingStrategy在频道的dispatcherchild 元素,唯一可用的选项是使用预定义的值枚举,这不允许开发人员设置LoadBalancingStrategy. 您现在可以使用load-balancer-ref提供对LoadBalancingStrategy. 有关更多信息,请参阅DirectChannel.spring-doc.cadn.net.cn

PublishSubscribeChannel 行为

以前,发送到没有订阅者的<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

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

远程文件模板

一个新的更高级别的抽象 (RemoteFileTemplate) 在SessionFTP 和 SFTP 模块使用的实现。 虽然它由端点在内部使用,但您也可以以编程方式使用此抽象。 像所有的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消息头。 但是,在某些情况下,外部系统可能并不总是返回结果(例如, 一个<jdbc:outbound-gateway/>当 SELECT 以空ResultSet或者可能是单向 Web 服务)。 因此,开发人员需要一个选项来配置是否需要回复。 为此,我们引入了requires-reply出站网关组件的属性。 在大多数情况下,默认值requires-replytrue. 如果没有结果,则ReplyRequiredException被抛出。 将值更改为false这意味着,如果外部服务未返回任何内容,那么消息流将在该点结束,类似于出站通道适配器。spring-doc.cadn.net.cn

WebService 出站网关有一个名为ignore-empty-responses. 它用于处理空的String响应,就好像没有收到响应一样。 默认情况下,它是true,但您可以将其设置为false以允许应用程序接收空的String在回复消息有效负载中。 当属性为true,出于requires-reply属性。 默认情况下,requires-reply为 false。

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

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

以前,<int-amqp:outbound-gateway/>在调用消息转换器之前映射标头,转换器可以覆盖标头,例如content-type. 出站适配器在转换后映射标头,这意味着像content-type从出站Message(如果存在)被使用。spring-doc.cadn.net.cn

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

存储过程组件改进

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

row-mapper存储过程入站通道适配器的属性<returning-resultset/>child 元素现在支持对RowMapperbean 定义。 以前,它只包含一个类名(仍然受支持)。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 入站通道适配器现在可以使用nullserializer属性,原始数据是消息有效负载。spring-doc.cadn.net.cn

Redis 出站通道适配器现在具有topic-expression属性来确定Message在运行时。spring-doc.cadn.net.cn

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

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

Advising Filters

以前,当<filter/>有一个<request-handler-advice-chain/>,则丢弃作全部在通知链的范围内执行(包括discard-channel). 过滤器元件现在有一个名为discard-within-advice(默认值:true) 以允许在通知链完成后执行丢弃作。 请参阅建议过滤器spring-doc.cadn.net.cn

使用注释为端点提供建议

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

ObjectToStringTransformer 改进

此转换器现在可以正确转换byte[]char[]payloads 到String. 有关详细信息,请参阅 Transformerspring-doc.cadn.net.cn

JPA 支持更改

要持久化或合并的有效负载现在可以是java.lang.Iterable.spring-doc.cadn.net.cn

在这种情况下,每个对象返回的Iterable被视为实体,并使用基础EntityManager. 迭代器返回的 Null 值将被忽略。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-results,该文件已被弃用。max-resultsmax-results-expression用于分别提供最大结果数或表达式来计算结果集中的最大结果数。spring-doc.cadn.net.cn

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

Delayer:延迟表达

以前,<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>或任何ApplicationListener配置为接收ImapIdleExceptionEvent(或其超类之一)。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属性。 看XsltPayloadTransformer.spring-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入站和出站通道适配器,让您写入和读取Message有效负载进出 Redis 集合。有关详细信息,请参阅 RedisStore 出站通道适配器Redis 存储入站通道适配器spring-doc.cadn.net.cn

MongoDB 入站和出站通道适配器

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

JPA 端点

Spring Integration 现在包括 Java Persistence API (JPA) 的组件,用于检索和持久化 JPA 实体对象。JPA Adapter 包括以下组件: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

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

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

弹簧-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

有序关机

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

JMS 出站网关改进

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

ObjectToJsonTransformer

默认情况下,ObjectToJsonTransformer现在将content-typeheader 到application/json. 有关详细信息,请参阅 Transformerspring-doc.cadn.net.cn

HTTP 支持

默认情况下,不再启用基于 HTTP 的 Java 序列化。 以前,当将expected-response-typeSerializable对象,则Accept标头设置不正确。 我们更新了SerializingHttpMessageConverterAcceptheader 到application/x-java-serialized-object. 但是,由于这可能会导致与现有应用程序不兼容,因此我们决定不再自动将此转换器添加到 HTTP 端点。spring-doc.cadn.net.cn

如果您希望使用 Java 序列化,则需要将SerializingHttpMessageConverter使用message-converters属性(当您使用 XML 配置时)或使用setMessageConverters()方法(在 Java 中)。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 Exchange 和 Queues 支持。spring-doc.cadn.net.cn

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

MongoDB 支持

从版本 2.1 开始,Spring Integration 通过提供基于 MongoDB 的 MongoDB 来提供对 MongoDB 的支持MessageStore.spring-doc.cadn.net.cn

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

Redis 支持

从 2.1 版开始,Spring Integration 通过提供基于 Redis 的 Redis 来支持 Redis,这是一个高级键值存储MessageStore以及发布-订阅消息传递适配器。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 中,JDBCModule 还通过添加多个新组件(包括入站和出站通道适配器以及出站网关)来提供存储过程支持。 存储过程支持利用 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 开始,我们添加了有效负载扩充器。 有效负载扩充器定义了一个端点,该端点通常会传递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 命名空间支持获得)。 作为替代方案,我们添加了sessionCacheSizesessionWaitTimeout属性CachingSessionFactory.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属性现在默认为true.spring-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 的旧应用程序可能会中断。

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

XML 模式更新至 2.1

Spring Integration 2.1 附带了更新的 XML Schema(版本 2.1)。 它提供了许多改进,例如前面讨论的路由器标准化。spring-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 示例项目并添加了许多新示例,例如涵盖 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 组件(例如 Datatype 通道)时受益于 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 轮询器的配置。有关示例配置,请参阅 Channel Adapterspring-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 支持“和 Resequencerspring-doc.cadn.net.cn

索赔检查

我们添加了声明检查模式的实现。 声明检查模式背后的想法是,您可以将消息有效负载交换为“声明票证”。 这使您可以减少带宽并避免跨渠道发送消息时出现潜在的安全问题。 有关更多详细信息,请参阅索赔检查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

进纸适配器

我们还添加了用于接收新闻提要(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对象。 有关更多详细信息,请参阅 Transformerspring-doc.cadn.net.cn

JSON 转换器

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

序列化转换器

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

框架重构

核心 API 进行了一些重大重构,使其更简单、更可用。尽管我们预计对开发人员的影响应该很小,但您应该通读本文档以了解更改的内容。具体而言,您应该阅读动态路由器消息传递网关HTTP 出站组件消息聚合器。如果您直接依赖于某些核心组件 (Message,MessageHeaders,MessageChannel,MessageBuilder等),您需要更新任何 import 语句。我们重组了一些打包,以提供扩展领域模型所需的灵活性,同时避免任何循环依赖关系(这是框架的一项政策,以避免这种“纠结”)。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 集成的 Spring 工具套件可视化编辑器

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