更改历史记录

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 集成扩展项目已作为spring-integration-hazelcast模块。 有关更多信息,请参阅 Hazelcast 支持spring-doc.cadn.net.cn

SMB 支持

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

PostgreSQL 推送通知

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

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

RabbitMQ 流队列支持

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

Apache MINA SFTP

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

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

千分尺观察

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

GraalVM Polyglot 支持

脚本模块现在提供了一个PolyglotScriptExecutor基于 GraalVM Polyglot 支持的实现。 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并且可以在同一个 service 方法上多次声明相同的类型。 消息收发注释不需要poller属性作为@Poller了。spring-doc.cadn.net.cn

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

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

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

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

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

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

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

IntegrationFlowsfactory 现在标记为已弃用,以支持IntegrationFlow接口本身。 Factory 类将在将来的发行版中删除。spring-doc.cadn.net.cn

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

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

Messaging Gateway 接口方法现在可以返回Future<Void>Mono<Void>正确异步执行下游流。spring-doc.cadn.net.cn

旁边带有@MessagingGatewayannotation 接口也可以用@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

有关更多信息,请参阅 Messaging Gatewayspring-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-rmimodule 在以前的版本中被弃用后已被完全删除。 没有替代品:建议迁移到更安全的网络和应用程序协议,例如 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 Lock Registryspring-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如果replyPubSubDomainoption 设置为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 请求属性支持

添加了 Webclient 请求属性支持WebFluxRequestExecutingMessageHandler.spring-doc.cadn.net.cn

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

5.4 和 5.5 之间的更改

新组件

文件聚合器

一个FileSplitter.FileMaker-based 实现CorrelationStrategy,ReleaseStrategyMessageGroupProcessor作为FileAggregator组件。 有关更多信息,请参阅 File Aggregatorspring-doc.cadn.net.cn

MQTT v5 支持

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

一般更改

所有持久的MessageGroupStoreimplementation 提供了一个streamMessagesForGroup(Object groupId)Contract 的 Contract。 有关更多信息,请参阅 Message Storespring-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 == 0as 跳过调用源。 稍后可以将其更改为不同的值,例如通过 Control Bus。 有关更多信息,请参阅轮询使用者spring-doc.cadn.net.cn

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

groupTimeoutExpression对于关联消息处理程序(AggregatorResequencer) 现在可以计算为java.util.Date对于一些精细的调度用例。 此外,BiFunction groupConditionSupplier选项添加到AbstractCorrelatingMessageHandler要提供MessageGroup条件。 有关更多信息,请参阅 Aggregatorspring-doc.cadn.net.cn

MessageGroupabstraction 可以通过condition稍后进行评估,以便为小组做出决定。 有关更多信息,请参阅 Message Group Conditionspring-doc.cadn.net.cn

集成流组合

新的IntegrationFlows.from(IntegrationFlow)添加了 factory 方法以允许启动电流IntegrationFlow从现有流的输出中。 此外,IntegrationFlowDefinition已添加to(IntegrationFlow)terminal 运算符在某个其他流的输入通道处继续电流。 有关更多信息,请参阅 集成流组合spring-doc.cadn.net.cn

AMQP 更改

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

Redis 更改

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

HTTP 更改

HttpRequestExecutingMessageHandler不会回退到application/x-java-serialized-objectcontent 类型,并允许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现在支持Iterablemessage payload 的PersistMode.DELETE.spring-doc.cadn.net.cn

有关更多信息,请参阅 Outbound Channel Adapterspring-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-kafkamodule 添加到此项目中。spring-doc.cadn.net.cn

KafkaProducerMessageHandler sendTimeoutExpressiondefault 已更改。spring-doc.cadn.net.cn

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

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

R2DBC 通道适配器

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

Redis 流支持

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

可更新锁注册表

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

ZeroMQ 支持

ZeroMqChannel,ZeroMqMessageHandlerZeroMqMessageProducer已引入。 有关更多信息,请参阅 ZeroMQ 支持spring-doc.cadn.net.cn

一般更改

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

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

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

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

Thread Barrier 现在有两个单独的超时选项:requestTimeouttriggerTimeout.spring-doc.cadn.net.cn

TCP/UDP 更改

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

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

AMQP 更改

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

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

邮件更改

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

5.2 和 5.3 之间的更改

新组件

集成模式

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

ReactiveMessageHandler

ReactiveMessageHandler现在在框架中原生支持。 有关更多信息,请参见 ReactiveMessageHandlerspring-doc.cadn.net.cn

ReactiveMessageSourceProducer

ReactiveMessageSourceProducerMessageProducerSupport包装提供的MessageSource转换为Flux按需receive()调用。 有关更多信息,请参阅 Reactive Streams Supportspring-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来自消息处理程序的回复。 有关更多信息,请参见 Reactive Advicespring-doc.cadn.net.cn

HandleMessageAdviceAdapter

一个HandleMessageAdviceAdapter用于包装任何MethodInterceptor申请MessageHandler.handleMessage()而不是默认的AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage()行为。 有关更多信息,请参阅 Handling Message Advicespring-doc.cadn.net.cn

MongoDB 反应式通道适配器

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

接收消息建议

一个特别的ReceiveMessageAdvice已引入 Proxy exactlyMessageSource.receive()PollableChannel.receive(). 有关更多信息,请参阅智能轮询spring-doc.cadn.net.cn

一般更改

网关代理现在不代理default方法。 看调用default方法了解更多信息。spring-doc.cadn.net.cn

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

在聚合器中,当MessageGroupProcessor返回MessageMessageBuilder.popSequenceDetails()如果sequenceDetails匹配组第一条消息中的标头。 有关更多信息,请参阅 Aggregator Programming Modelspring-doc.cadn.net.cn

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

Spring Integration 中的事务支持现在还包括配置ReactiveTransactionManager如果MessageSourceMessageHandlerimplementation 会生成一个 Reactive 类型供 payload 发送。 看TransactionInterceptorBuilder了解更多信息。 另请参见 Reactive Transactionsspring-doc.cadn.net.cn

新的intercept()作员注册ChannelInterceptor没有创建显式通道的实例被添加到 Java DSL 中。 有关更多信息,请参见 Operator intercept()spring-doc.cadn.net.cn

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

MessageProducerSupport基类现在具有subscribeToPublisher(Publisher<? extends Message<?>>)允许实现消息驱动的生产者端点的 API,这些端点通过反应式Publisher. 有关更多信息,请参阅 Reactive Streams Supportspring-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 和控制 URI 编码了解更多信息。 这也会影响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

(S)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

Rate Limit Advice 支持

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

Caching Advice 支持

CacheRequestHandlerAdvice现在可用于在处理程序上缓存请求结果。 有关更多信息,请参见 Caching Advicespring-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 Transformersspring-doc.cadn.net.cn

一般更改

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

splitter现在支持discardChannelconfiguration 选项。 有关更多信息,请参阅 Splitterspring-doc.cadn.net.cn

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

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

所有MessageHandlingException现在包括一个 Bean 资源和源,用于在不涉及最终用户代码的情况下回溯配置部分。 有关更多信息,请参阅错误处理spring-doc.cadn.net.cn

为了获得更好的最终用户体验,Java DSL 现在提供了一个 configurer 变体,用于使用网关接口启动流。 看IntegrationFlows.from(Class<?> serviceInterface, Consumer<GatewayProxySpec> endpointConfigurer)JavaDocs 了解更多信息。 也是一个MethodArgsHolder现在是GatewayProxyFactoryBean. 这#args#method评估上下文变量现已弃用。 有关更多信息,请参阅 Messaging Gateway。spring-doc.cadn.net.cn

AMQP 更改

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

入站通道适配器现在可以将批量消息作为List<?>payload 的 Payload 中执行,而不是接收每个批处理 Fragment 的离散消息。 有关更多信息,请参阅 Batched Messagesspring-doc.cadn.net.cn

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

文件更改

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

TCP 更改

ByteArrayLengthHeaderSerializer现在,除了有效负载之外,还可以包含标头的长度。 有关更多信息,请参见Message Demarcation (Serializers and Deserializers)。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标头,而不是用于下游交互。 有关更多信息,请参阅 Mail-receiving Channel Adapterspring-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

远程文件信息(包括 host/port 和 directory)现在包含在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接口现在在 Framework 组件中具有改进的集成支持。 此外,Kotlin lambda 现在可用于处理程序和源方法。spring-doc.cadn.net.cn

@LongRunningTest

一个 JUnit 5@LongRunningTestconditional annotation 来检查RUN_LONG_INTEGRATION_TESTSentry 的值为true以确定是应该运行还是跳过 TEST。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

Dispatcher 异常

捕获并重新引发的异常AbstractDispatcher现在更加一致: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.BYTESmode 的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

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

Aggregator 更改

如果groupTimeout的计算结果为负值,则聚合器现在会立即使组过期。 只null被视为对当前消息不执行任何作的信号。spring-doc.cadn.net.cn

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

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

@Publisher 注释更改

从版本 5.1 开始,您必须显式打开@PublisherAOP 功能@EnablePublisher或使用<int:enable-publisher>子元素<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()被调用。 因此,如果FileReadingMessageSource具有autoStartup = false,则在应用程序启动期间不会发生针对文件系统的故障。spring-doc.cadn.net.cn

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

AMQP 更改

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

contentTypeHeader 现在已正确映射为 General Headers 映射中的一个条目。 有关更多信息,请参阅 contentType Headerspring-doc.cadn.net.cn

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

JDBC 更改

一个令人困惑的max-rows-per-pollJDBC 入站通道适配器和 JDBC 出站网关上的属性已被弃用,取而代之的是新引入的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

出站网关 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现在允许映射入站JMSDeliveryModeJMSExpirationproperties (属性)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

千分尺支持更改

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

集成图定制

现在可以向IntegrationNodeS 通过Function<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationGraphServer. 有关更多信息,请参阅 Integration Graphspring-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 集成测试框架来帮助测试 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的基础设施,我们可以执行contentType从 payload 到 Target 方法参数的转换。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实现。 当您需要确保元数据的事务边界时,这非常有用。spring-doc.cadn.net.cn

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

一般更改

Spring 集成现在完全基于 Spring 框架5.0和 Project Reactor3.1. 以前的 Project Reactor 版本不再受支持。spring-doc.cadn.net.cn

核心变更

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

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

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

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

当将 POJO 方法作为消息处理程序时,您现在可以使用@Default注解为不匹配的条件提供回退机制。 有关更多信息,请参阅配置 Service Activatorspring-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) 进行组件名称匹配。 有关更多信息,请参见 Global Channel Interceptor Configurationspring-doc.cadn.net.cn

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

网关更改

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

RequestReplyExchangerinterface 现在有一个throws MessagingException子句来满足提议的消息交换协定。spring-doc.cadn.net.cn

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

聚合器性能更改

默认情况下,聚合商现在使用SimpleSequenceSizeReleaseStrategy,这样效率更高,尤其是对于大型组。 现在,空组计划在以下时间后删除empty-group-min-timeout. 有关更多信息,请参阅 Aggregatorspring-doc.cadn.net.cn

Splitter 更改

splitter 组件现在可以处理和拆分 JavaStream和 Reactive StreamsPublisher对象。 如果输出通道是ReactiveStreamsSubscribableChannelAbstractMessageSplitter构建一个Flux进行后续迭代,而不是常规的Iterator,与正在拆分的对象无关。 另外AbstractMessageSplitter提供protected obtainSizeIfPossible()方法来确定IterableIterator对象。 有关更多信息,请参阅 Splitterspring-doc.cadn.net.cn

JMS 更改

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

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

邮件更改

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

Feed 更改

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

文件更改

我们引入了新的FileHeaders.RELATIVE_PATH表示相对路径的 message headerFileReadingMessageSource.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

您现在可以将 regex 和 pattern 过滤器配置为始终传递目录。 当您在出站网关中使用递归时,这可能很有用。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. 请参阅scanner选项。 此外,您现在可以将这些适配器切换到WatchService相反。spring-doc.cadn.net.cn

我们添加了NLST命令添加到AbstractRemoteFileOutboundGateway执行 list files names remote 命令。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 属性,用于自定义不应复制到新创建的MessageMessageBuilder. 有关更多信息,请参阅全局属性spring-doc.cadn.net.cn

流更改

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

屏障变化

BarrierMessageHandler现在支持将延迟到达的 Trigger 消息发送到的 discard 通道。 有关更多信息,请参见 Thread Barrierspring-doc.cadn.net.cn

AMQP 更改

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

入站端点现在支持 Spring AMQPDirectMessageListenerContainer.spring-doc.cadn.net.cn

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

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

HTTP 更改

默认情况下,DefaultHttpHeaderMapper.userDefinedHeaderPrefixproperty 现在为空字符串,而不是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

出站通道适配器现在支持 topic、qos 和 retained 属性的表达式。 默认值保持不变。 有关更多信息,请参阅 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.Source用户定义的标头添加到 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标头来指示消息的来源 (topic 或 pattern)。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,允许您在 Store 中自定义消息插入。spring-doc.cadn.net.cn

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

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

指标更改

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

对 Micrometer 进行了更改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实现。 有关更多信息,请参阅 Message Storespring-doc.cadn.net.cn

PersistentMessageGroup

我们添加了PersistentMessageGroup(lazy-load proxy) 实现MessageGroupStore实例 返回getMessageGroup()当他们的lazyLoadMessageGroupstrue(默认值)。 有关更多信息,请参阅 Message Storespring-doc.cadn.net.cn

FTP 和 SFTP 流入站通道适配器

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

StreamTransformer

我们添加了StreamTransformer要将InputStreampayload 复制到byte[]String. 有关更多信息,请参阅 Stream Transformerspring-doc.cadn.net.cn

集成图

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

JDBC Lock Registry

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

LeaderInitiatorLockRegistry

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

一般更改

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

核心变更

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

链中的出站网关

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

异步服务激活器

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

消息注释支持更改

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

邮件更改

本节描述了对 Spring 集成邮件功能的一般更改。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 集成 JMS 功能的一般更改。spring-doc.cadn.net.cn

标头映射器

DefaultJmsHeaderMapper现在映射标准correlationIdheader 作为 Message 属性,方法是调用其toString()方法。 有关更多信息,请参见Mapping Message Headers to and from JMS Messagespring-doc.cadn.net.cn

异步网关

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

Aggregator 更改

当 POJO 聚合器发布Message<?>对象。 这种情况很少见,但是,如果您的应用程序这样做,则需要对 POJO 进行少量更改。 查看此内容重要说明:SimpleMessageGroup.getMessages()method 返回一个unmodifiableCollection.注意以了解更多信息。spring-doc.cadn.net.cn

TCP/UDP 更改

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

事件

新的TcpConnectionServerListeningEvent在启动 Server Connection Factory 时发出。 有关更多信息,请参阅 TCP 连接事件spring-doc.cadn.net.cn

您现在可以使用destination-expressionsocket-expressionattributes 开启<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 集成文件功能的一般更改。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时间戳。 有关更多信息,请参阅 File Timestamps 文件时间戳spring-doc.cadn.net.cn

Splitter 更改

FileSplitter现在,当文件完全读取时,它会自动关闭 FTP 或 SFTP 会话。 当出站网关返回InputStream或者当您使用新的 FTP 或 SFTP 流媒体频道适配器时。 我们还引入了一个新的markers-json转换选项FileSplitter.FileMarker转换为 JSONString轻松的下游网络交互。 有关更多信息,请参阅 File Splitterspring-doc.cadn.net.cn

文件过滤器

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

AMQP 更改

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

内容类型消息转换器

出站终端节点现在支持RabbitTemplate配置了ContentTypeDelegatingMessageConverter这样 ,您可以根据 Message 内容类型选择转换器。 有关更多信息,请参阅 出站消息转换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

List Push/Pop Direction

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

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

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

HTTP 更改

以前,对于具有正文(例如POST),没有content-type标头,则正文将被忽略。 在此版本中,此类请求的内容类型被视为application/octet-stream按推荐 由 RFC 2616 提供。 有关更多信息,请参阅 Http 入站组件spring-doc.cadn.net.cn

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

SFTP 更改

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

工厂 Bean

我们添加了一个新的工厂 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 集成 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

标头映射

本节介绍版本 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默认情况下,不再映射 header。 有关更多信息,请参阅 AMQP 消息标头spring-doc.cadn.net.cn

Groovy 脚本

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

@InboundChannelAdapter变化

@InboundChannelAdapter现在有一个别名channel属性value. 此外,目标SourcePollingChannelAdapter组件现在可以解析目标outputChannelbean 从其提供的名称 (outputChannelNameoptions) 中。 有关更多信息,请参阅 Annotation Supportspring-doc.cadn.net.cn

XMPP 更改

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

WireTap 延迟绑定

WireTap ChannelInterceptor现在可以接受channelName解析为目标MessageChannel稍后,在第一次主动拦截器作期间。 有关详细信息,请参见 Wire Tapspring-doc.cadn.net.cn

ChannelMessageStoreQueryProvider变化

ChannelMessageStoreQueryProvider现在支持 H2 数据库。 有关更多信息,请参阅 Backing Message Channelsspring-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 返工

我们添加了一个新的MetricsFactorystrategy 界面。 此更改以及 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

FileSplitter 文件拆分器

在 4.1.2 中,我们添加了FileSplitter,它将文本文件拆分为多行。 现在,它在int-file:Namespace。 有关更多信息,请参阅 File Splitterspring-doc.cadn.net.cn

Zookeeper 支持

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

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

线程屏障

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

STOMP 支持

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

Codec

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

消息 PreparedStatement Setter

新的MessagePreparedStatementSetter函数接口回调可用于JdbcMessageHandler (<int-jdbc:outbound-gateway><int-jdbc:outbound-channel-adapter>) 作为使用SqlParameterSourceFactory要在PreparedStatement使用requestMessage上下文。 有关更多信息,请参阅 Outbound Channel Adapterspring-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

监视 Service Directory Scanner

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

持久文件列表筛选器更改

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

类套餐更改

我们将ScatterGatherHandlerorg.springframework.integration.handlerorg.springframework.integration.scattergather.spring-doc.cadn.net.cn

TCP 更改

本节描述了对 Spring 集成 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()允许您从会话中提取信息以添加到 Message Headers。 有关更多信息,请参阅 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/>,默认为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 集成 TCP 功能的一般更改。spring-doc.cadn.net.cn

Reply 侦听器延迟初始化

您现在可以将 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 集成 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 通道上消息的基础,并添加了额外的 Headers。 以前,任何关联数据(包括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 集成 HTTP 功能的一般更改。spring-doc.cadn.net.cn

CORS

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

入站网关超时

您可以配置 HTTP 入站入口方式,以便在请求超时时返回您指定的状态代码。 默认值为 now500 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

Gateway 方法可以返回CompletableFuture<?>

使用 Java 8 时,网关方法现在可以返回CompletableFuture<?>. 看CompletableFuture了解更多信息。spring-doc.cadn.net.cn

MessagingGateway 注释

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

Aggregator 更改

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

聚合商性能

此版本包括聚合组件(聚合器、resequencer 等)的一些性能改进,方法是在发布消息时更有效地从组中删除消息。 新方法 (removeMessagesFromGroup) 已添加到邮件存储中。 将removeBatchSize属性(默认值:100) 调整每次作中删除的消息数量。 目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。spring-doc.cadn.net.cn

输出消息组处理器

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

FTP 和 SFTP 更改

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

入站通道适配器

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

Gateway 部分结果

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

委派 Session Factory

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

默认 sftp 会话工厂

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

工厂现在需要一个配置的knownHosts、文件,除非allowUnknownKeysproperty 为true(默认:false).spring-doc.cadn.net.cn

Message Session 回调

我们引入了MessageSessionCallback<F, T>执行任何自定义Session作与requestMessagecontext 中的<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<?> 网关

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

WebSocket 支持

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

Scatter-Gather 企业集成模式

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

Routing Slip Pattern

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

幂等接收器模式

我们添加了幂等接收器企业集成模式实现,方法是将<idempotent-receiver>组件或IdempotentReceiverInterceptorIdempotentReceiverJava 配置的注释。 有关更多信息,请参阅 Idempotent Receiver Enterprise Integration PatternJavadocspring-doc.cadn.net.cn

福音JsonObjectMapper

我们添加了 BoonJsonObjectMapper对于 JSON 转换器。 有关更多信息,请参阅 Transformerspring-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(). 有关详细信息,请参阅 [WARNING]。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 出站通道适配器现在支持异步发送,从而避免在确认交付之前阻塞。 有关更多信息,请参阅 Outbound Channel Adapterspring-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组件现在支持Iterator作为生成输出消息的结果对象。 有关更多信息,请参阅 Splitterspring-doc.cadn.net.cn

聚合

Aggregatorinstancess 现在支持新属性expire-groups-upon-timeout. 有关更多信息,请参阅 Aggregatorspring-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 Channel Registry

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

有序关机

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

管理RecipientListRouter

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

AbstractHeaderMapper:NON_STANDARD_HEADERS token

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

AMQP 通道:template-channel-transacted

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

Syslog 适配器

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

异步网关

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

聚合商建议链

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

出站通道适配器和脚本

<int:outbound-channel-adapter/>现在支持<script/>child 元素。 底层脚本必须具有voidreturn 类型或 returnnull. 请参阅 Groovy 支持脚本支持spring-doc.cadn.net.cn

Resequencer 更改

当 resequencer 中的消息组超时时(使用group-timeoutMessageGroupStoreReaper),现在默认情况下,将立即丢弃延迟到达的消息。 请参阅 Resequencerspring-doc.cadn.net.cn

可选的 POJO 方法参数

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

QueueChannelbacked Queue 类型

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

ChannelInterceptor变化

ChannelInterceptor现在支持额外的afterSendCompletion()afterReceiveCompletion()方法。 请参见Channel Interceptorspring-doc.cadn.net.cn

IMAP PEEK

从版本 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类。 有关更多信息,请参阅 Annotation Supportspring-doc.cadn.net.cn

@IntegrationComponentScan

我们添加了@IntegrationComponentScan注解允许对 Spring 集成特定的组件进行 Classpath 扫描。 有关更多信息,请参阅 Annotation Supportspring-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

Spring Boot@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附注。 有关更多信息,请参阅 Annotation Supportspring-doc.cadn.net.cn

Redis 通道消息存储

我们添加了一个 RedisMessageGroupStore,经过优化,可在备份QueueChannel用于持久性。 有关更多信息,请参阅 Redis 通道消息存储spring-doc.cadn.net.cn

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

MongodDB Channel 消息存储

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>组件来执行通用 Redis 命令,方法是使用RedisConnection#execute方法。 有关更多信息,请参阅 Redis 出站命令网关spring-doc.cadn.net.cn

RedisLockRegistry

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

@Poller

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

@InboundChannelAdapterSmartLifecycle对于带注释的终端节点

我们添加了@InboundChannelAdaptermethod 注解。 它是<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 框架spring-messaging模块。 在代码中直接引用这些类的开发人员需要进行更改,如 3.0 到 4.0 迁移指南的第一部分所述。spring-doc.cadn.net.cn

XPath Header Enricher 的 Header Type

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

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

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

JMS 标头映射

DefaultJmsHeaderMapper现在映射传入的JMSPriority标头添加到 Spring 集成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在将 payload 转换为已接受的datatype实例。 有关更多信息,请参阅数据类型通道配置spring-doc.cadn.net.cn

更简单的 Retry Advice 配置

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

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

我们添加了互斥的group-timeoutgroup-timeout-expressionattributes 设置为<int:aggregator><int:resequencer>. 这些属性允许强制完成 partialMessageGroup,前提是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_deliveryModeheader 或自定义 mapper 的 mapper 进行匹配。 我们添加了一个方便的default-delivery-mode属性设置为适配器,以便更轻松地配置此重要设置。 有关更多信息,请参阅出站通道适配器出站网关spring-doc.cadn.net.cn

FTP 超时

DefaultFtpSessionFactory现在公开了connectTimeout,defaultTimeoutdataTimeoutproperties 的子类化,无需子类化 Factory 来设置这些公共属性。 这postProcess*方法仍可用于更高级的配置。 有关更多信息,请参阅 FTP Session Factoryspring-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 模块现在为入站终端节点提供强大的请求映射支持。 我们替换了UriPathHandlerMappingclass 替换为IntegrationRequestMappingHandlerMapping,该 bean 名称为integrationRequestMappingHandlerMapping在应用程序上下文中。 解析 HTTP 入站端点时,新的IntegrationRequestMappingHandlerMapping已注册 Bean 或重用现有 Bean。 为了实现灵活的请求映射配置, Spring 集成提供了<request-mapping/>的子元素<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 支持

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

Redis:新组件

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

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

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

Header Channel Registry

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

MongoDB 支持:新增ConfigurableMongoDbMessageStore

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

Syslog 支持

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

tail支持

我们添加了使用tail命令在文本文件末尾添加行时生成消息。 请参见 'tail'ing 文件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/>. 默认情况下,此适配器会发送所有TcpConnectionEvent实例复制到Channel.spring-doc.cadn.net.cn

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

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

入站通道适配器脚本支持

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

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

内容扩充器现在提供<header/>child 元素,以根据来自底层消息流的回复消息使用标头来丰富出站消息。 有关更多信息,请参阅 Payload Enricherspring-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

“<gateway>” 更改

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

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

GatewayMethodMetadata现在是一个公共类。 它允许您以编程方式配置GatewayProxyFactoryBean来自 Java。spring-doc.cadn.net.cn

有关更多信息,请参阅 Messaging Gatewayspring-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 标头在 from 和 to HTTP 标头中被错误地处理在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 的实现,版本由 Classpath 中的存在决定。 以前,仅支持 Jackson 1.x。spring-doc.cadn.net.cn

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

有关详细信息,请参阅 Transformer 中的“JSON 转换器”。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

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

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

脚本支持:变量更改

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

Direct Channel Load Balancing 配置

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

PublishSubscribeChannel 行为

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

FTP、SFTP 和 FTPS 更改

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

我们删除了已弃用的cached-sessions属性。 以前,由此属性的值控制的嵌入式缓存机制不提供限制缓存大小的方法,缓存大小可以无限增长。 引入了版本 2.1CachingConnectionFactory,它成为缓存会话的首选(现在是唯一的)方法。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实现中,它会可靠地关闭底层 session,同时允许对 session 进行低级别访问。spring-doc.cadn.net.cn

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

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

所有出站网关(例如<jdbc:outbound-gateway/><jms:outbound-gateway/>) 专为 'request-reply' 场景而设计。 响应需要来自外部服务,并发布到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在 Reply message payload. 当属性为true,空字符串被视为无响应,以便requires-reply属性。 默认情况下,requires-reply对于 WebService 出站网关为 false。

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

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

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

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

存储过程组件改进

对于标准不支持的更复杂的特定于数据库的类型CallableStatement.getObject方法中,我们为<sql-parameter-definition/>元素中具有 OUT-direction 的 OUT-Direction:spring-doc.cadn.net.cn

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

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

Web 服务出站 URI 配置

Web 服务出站网关“uri”属性现在支持<uri-variable/>替换 Spring Web 服务支持的所有 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). filter 元素现在有一个名为discard-within-advice(默认:true) 以允许在通知链完成后执行 discard作。 请参阅 Advice Filtersspring-doc.cadn.net.cn

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

现在可以使用 annotation 配置请求处理程序通知链。 请参阅使用注释通知终端节点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>提供了delay-header-name属性来确定运行时的延迟值。 在复杂情况下,<delayer>必须在<header-enricher>. Spring Integration 3.0 引入了expressionattribute 和expression用于动态延迟确定的子元素。 这delay-header-name属性现已弃用,因为您可以在expression. 此外,我们还引入了ignore-expression-failures来控制表达式计算失败时的行为。 有关更多信息,请参阅延迟器spring-doc.cadn.net.cn

JDBC 消息存储改进

Spring 集成 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 集成现在具有RedisStore入站和出站通道适配器,允许您写入和读取Message与 Redis 集合之间的有效负载。 有关更多信息,请参阅 RedisStore 出站通道适配器和 Redis Store 入站通道适配器spring-doc.cadn.net.cn

MongoDB 入站和出站通道适配器

Spring 集成现在具有 MongoDB 入站和出站通道适配器,允许您写入和读取Messagepayloads 来往和从 MongoDB 文档存储。 有关更多信息,请参阅 MongoDB 出站通道适配器MongoDB 入站通道适配器spring-doc.cadn.net.cn

JPA 终端节点

Spring 集成现在包括 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 集成现在使用 Spring 3.1。spring-doc.cadn.net.cn

向终端节点添加行为

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

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

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

事务同步和伪事务

Poller 现在可以参与 Spring 的 Transaction Synchronization 功能。 这允许同步诸如通过入站通道适配器重命名文件之类的作,具体取决于事务是提交还是回滚。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 Namespace 支持将 reply-timeout 属性添加到以下出站网关:spring-doc.cadn.net.cn

弹簧-AMQP 1.1

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

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

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

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

JMX 支持

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

JDBC 支持:出站网关

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

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

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

有序关机

我们添加了一个名为stopActiveComponents()IntegrationMBeanExporter. 它允许以有序的方式关闭 Spring 集成应用程序,不允许新的入站消息发送到某些适配器,并等待一段时间以允许正在进行的消息完成。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-typeSerializableobject、Accept标头未正确设置。 我们更新了SerializingHttpMessageConverter要设置Acceptheader 设置为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在 Classpath 上。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 集成还提供了一个点对点的消息通道和一个发布-订阅消息通道,这两者都由 AMQP 交换和队列支持。spring-doc.cadn.net.cn

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

MongoDB 支持

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

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

Redis 支持

从版本 2.1 开始, Spring 集成通过提供基于 Redis 的MessageStore以及发布-订阅消息传递适配器。spring-doc.cadn.net.cn

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

支持 Spring 的 Resource 抽象

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

有关更多详细信息,请参阅 Resource Inbound Channel Adapterspring-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 集成 2.1 提供了一个基于 XPath 的新消息过滤器。 它是XML模块。 XPath 筛选器允许您使用 XPath 表达式筛选消息。 我们还添加了 XML 验证筛选器的文档。spring-doc.cadn.net.cn

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

Payload Enricher

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

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

FTP 和 SFTP 出站网关

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

例如,你可以使用这些出站网关来列出、检索和删除远程文件,并让 Spring 集成消息流继续处理远程服务器的响应。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 命名空间支持获得)。 作为替代方案,我们添加了sessionCacheSizesessionWaitTimeoutattributes 上的CachingSessionFactory.spring-doc.cadn.net.cn

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

框架重构

我们以多种方式重构了 Spring 集成框架,本节将对此进行介绍。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 集成的应用程序可能会中断。

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

XML 架构已更新到 2.1

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

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

下面的示例声明了一个无版本的 Spring 集成名称空间: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 集成名称空间: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 集成项目使用 Git 进行版本控制。 为了进一步提高社区的知名度,该项目从 SpringSource 托管的 Git 存储库转移到了 Github。 Spring 集成 Git 存储库位于:spring-integrationspring-doc.cadn.net.cn

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

使用 Sonar 提高源代码可见性

为了提供更好的源代码可见性,从而监控 Spring 集成源代码的质量,我们设置了一个 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-支持]] ===== 对 Spring 表达式语言 (SpEL) 的支持spring-doc.cadn.net.cn

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

转换服务和转换器

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

TaskSchedulerTrigger

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

RestTemplateHttpMessageConverter

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

企业集成模式添加

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

消息历史记录

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

消息存储

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

索赔检查

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

控制总线

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

新的通道适配器和网关

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

TCP 和 UDP 适配器

我们添加了通道适配器,用于通过 TCP 和 UDP Internet 协议接收和发送消息。 有关更多详细信息,请参阅 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 集成添加了许多其他功能。 本节将介绍它们。spring-doc.cadn.net.cn

Groovy 支持

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

映射转换器

这些对称转换器将 payload 对象相互转换Map对象。 有关更多详细信息,请参阅 Transformerspring-doc.cadn.net.cn

JSON 转换器

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

序列化转换器

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

框架重构

核心 API 经过了一些重大的重构,使其更简单、更可用。 尽管我们预计对开发人员的影响应该很小,但您应该通读本文档以了解更改的内容。 具体来说,您应该阅读 Dynamic RoutersMessaging GatewaysHTTP Outbound ComponentsMessageAggregator。 如果您直接依赖某些核心组件 (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 集成示例。 我们还创建了许多新示例,包括每个新适配器的示例。spring-doc.cadn.net.cn

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

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