3.0 和 4.0 之间的更改
新组件
4.0 版本新增了许多组件。
MQTT 通道适配器
MQTT 通道适配器(以前在 Spring Integration Extensions 存储库中可用)现在作为 Spring Integration 常规发行版的一部分提供。请参阅MQTT 支持。
@EnableIntegration
我们添加了@EnableIntegration注解,以允许在使用@Configuration类时声明标准的 Spring Integration bean。有关更多信息,请参阅注解支持。
@IntegrationComponentScan
我们添加了@IntegrationComponentScan注解,以允许对 Spring Integration 特定组件进行类路径扫描。有关更多信息,请参阅注解支持。
“@EnableMessageHistory”
您现在可以在@Configuration类中使用@EnableMessageHistory注解启用消息历史记录。此外,JMX MBean 可以修改消息历史记录设置。此外,MessageHistory可以跟踪注解端点(例如@ServiceActivator、@Splitter等)自动创建的MessageHandler实例。有关更多信息,请参阅消息历史记录。
@MessagingGateway
您现在可以使用@MessagingGateway注解配置消息网关接口。它类似于<int:gateway/>XML 元素。有关更多信息,请参阅@MessagingGateway注解。
Spring Boot @EnableAutoConfiguration
除了前面提到的@EnableIntegration注解之外,我们还引入了一个钩子,允许使用 Spring Boot 的@EnableAutoConfiguration注解配置 Spring Integration 基础设施 bean。有关更多信息,请参阅 Spring Boot 参考指南中的“自动配置”。
@GlobalChannelInterceptor
除了上面提到的@EnableIntegration注解之外,我们还引入了@GlobalChannelInterceptor注解。有关更多信息,请参阅注解支持。
@IntegrationConverter
我们引入了@IntegrationConverter注解作为<int:converter/>组件的模拟。有关更多信息,请参阅注解支持。
@EnablePublisher
我们添加了@EnablePublisher注解,以允许为@Publisher注解指定default-publisher-channel。有关更多信息,请参阅注解支持。
Redis 通道消息存储
我们添加了一个 Redis MessageGroupStore,它经过优化,可用于在持久化QueueChannel时作为后端。有关更多信息,请参阅Redis 通道消息存储。
我们添加了一个 Redis ChannelPriorityMessageStore。您可以使用它按优先级检索消息。有关更多信息,请参阅Redis 通道消息存储。
MongoDB 通道消息存储
MongoDB 支持现在提供MongoDbChannelMessageStore,这是一个通道特定的MessageStore实现。将priorityEnabled = true时,您可以在<int:priority-queue>元素中使用它来实现持久化消息的优先级排序轮询。有关更多信息,请参阅MongoDB 通道消息存储。
@EnableIntegrationMBeanExport
您现在可以在@Configuration类中使用@EnableIntegrationMBeanExport注解启用IntegrationMBeanExporter。有关更多信息,请参阅MBean 导出器。
ChannelSecurityInterceptorFactoryBean
ChannelSecurityInterceptorFactoryBean现在支持为使用@Configuration类的消息通道配置 Spring Security。有关更多信息,请参阅Spring Integration 中的安全性。
Redis 命令网关
Redis 支持现在提供<outbound-gateway>组件,用于通过使用RedisConnection#execute方法执行通用 Redis 命令。有关更多信息,请参阅Redis 出站命令网关。
RedisLockRegistry
RedisLockRegistry现在可用,以支持对多个应用程序实例和服务器可见的全局锁。这些可以与多个应用程序实例的聚合消息处理程序一起使用,以便仅在一个实例上发生组释放。有关更多信息,请参阅Redis 锁注册表和聚合器。
@Poller
基于注解的消息配置现在可以有一个poller属性。这意味着用@ServiceActivator、@Aggregator和类似注解注解的方法现在可以使用引用PollableChannel的inputChannel。有关更多信息,请参阅注解支持。
@InboundChannelAdapter和带注解端点的SmartLifecycle
我们添加了@InboundChannelAdapter方法注解。它类似于<int:inbound-channel-adapter>XML 组件。此外,所有消息注解现在都提供SmartLifecycle选项。有关更多信息,请参阅注解支持。
Twitter 搜索出站网关
我们添加了一个新的 Twitter 端点:<int-twitter-search-outbound-gateway/>。与每次都使用相同搜索查询进行轮询的搜索入站适配器不同,出站网关允许按需定制查询。有关更多信息,请参阅Spring Integration Social Twitter。
@BridgeFrom和@BridgeTo注解
我们引入了@BridgeFrom和@BridgeTo@Bean方法注解,以标记@Configuration类中的MessageChannel bean。有关更多信息,请参阅注解支持。
元消息注解
消息注解(@ServiceActivator、@Router、@MessagingGateway等)现在可以配置为用户定义的消息注解的元注解。此外,用户定义的注解可以具有相同的属性(inputChannel、@Poller、autoStartup等)。有关更多信息,请参阅注解支持。
一般更改
本节描述了从 3.0 版本到 4.0 版本的一般更改。
要求 Spring Framework 4.0
我们将核心消息抽象(Message、MessageChannel等)移动到 Spring Framework 的spring-messaging模块。在其代码中直接引用这些类的开发人员需要进行更改,如3.0 到 4.0 迁移指南的第一节所述。
XPath 标头增强器:标头类型
我们为<int-xml:xpath-header-enricher>的header子元素引入了header-type属性。此属性提供了标头值的目标类型(XPath 表达式评估的结果将转换为此类型)。有关更多信息,请参阅XPath 标头增强器。
对象到 JSON 转换器:节点结果
我们为<int:object-to-json-transformer>引入了result-type属性。此属性提供了将对象映射到 JSON 的结果的目标类型。它支持STRING(默认)和NODE。有关更多信息,请参阅自 3.0 版起,Spring Integration 还提供了一个内置的#xpath SpEL 函数,可用于表达式。。
JMS 标头映射
DefaultJmsHeaderMapper现在将传入的JMSPriority标头映射到 Spring Integration priority标头。以前,priority仅用于出站消息。有关更多信息,请参阅将消息标头映射到 JMS 消息和从 JMS 消息映射。
JMS 出站通道适配器
JMS 出站通道适配器现在支持session-transacted属性(默认值:false)。以前,您必须注入自定义的JmsTemplate才能使用事务。请参阅出站通道适配器。
JMS 入站通道适配器
JMS 入站通道适配器现在支持session-transacted属性(默认值:false)。以前,您必须注入自定义的JmsTemplate才能使用事务。该适配器允许在acknowledgeMode中使用“transacted”,这是不正确的并且不起作用。此值不再允许。请参阅入站通道适配器。
数据类型通道
您现在可以指定一个MessageConverter,用于在数据类型通道中将有效载荷转换为(如果需要)接受的datatype实例之一。有关更多信息,请参阅数据类型通道配置。
更简单的重试建议配置
我们添加了简化的命名空间支持来配置RequestHandlerRetryAdvice。有关更多信息,请参阅配置重试建议。
关联端点:基于时间的释放策略
我们为<int:aggregator>和<int:resequencer>添加了互斥的group-timeout和group-timeout-expression属性。这些属性允许强制完成部分MessageGroup,前提是ReleaseStrategy不释放组,并且在指定时间内没有进一步的消息到达。有关更多信息,请参阅使用 XML 配置聚合器。
Redis 元数据存储
RedisMetadataStore现在实现了ConcurrentMetadataStore,使其可以在多个应用程序实例或服务器环境中用于AbstractPersistentAcceptOnceFileListFilter实现。有关更多信息,请参阅Redis 元数据存储、读取文件、FTP 入站通道适配器和SFTP 入站通道适配器。
JdbcChannelMessageStore和PriorityChannel
JdbcChannelMessageStore现在实现了PriorityCapableChannelMessageStore,使其可以用作priority-queue实例的message-store引用。有关更多信息,请参阅后端消息通道。
FTP 超时
DefaultFtpSessionFactory现在公开了connectTimeout、defaultTimeout和dataTimeout属性,避免了子类化工厂以设置这些常见属性的需要。postProcess*方法仍然可用于更高级的配置。有关更多信息,请参阅FTP 会话工厂。
Twitter:StatusUpdatingMessageHandler
StatusUpdatingMessageHandler(<int-twitter:outbound-channel-adapter>)现在支持tweet-data-expression属性来构建org.springframework.social.twitter.api.TweetData对象以更新时间线状态。此功能允许例如附加图像。有关更多信息,请参阅Spring Integration Social Twitter。
JPA 检索网关:id-expression
我们为<int-jpa:retrieving-outbound-gateway>引入了id-expression属性以执行EntityManager.find(Class entityClass, Object primaryKey)。有关更多信息,请参阅检索出站网关。
TCP 反序列化事件
当其中一个标准反序列化器在将输入流解码为消息时遇到问题时,它现在会发出TcpDeserializationExceptionEvent,允许应用程序检查发生异常时的数据。有关更多信息,请参阅TCP 连接事件。
@Bean定义上的消息注解
您现在可以在@Configuration类中的@Bean定义上配置消息注解(@ServiceActivator、@Router、@InboundChannelAdapter等)。有关更多信息,请参阅注解支持。