领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我谨代表 Spring Integration 团队宣布,Spring Integration 5.0 的第五个里程碑版本(5.0.0.M5)现已发布。
本次发布包含 21 个 JIRA 问题(以及一些 GitHub 问题),其中包括错误修复和多项新功能。自从上次发布的 Milestone 3 以来,M4 和 M5 的一些亮点功能如下:
Splitter 现在可以处理 Java Stream 和 Reactor Flux 载荷。如果输出通道是 ReactiveStreamsSubscribableChannel,则拆分支持背压。
引入了 ErrorMessagePublisher 和 ErrorMessageStrategy,以便在 ErrorMessage 的初始消息中实现更好的错误处理体验。Spring Kafka 2.0 和 Spring AMQP 2.0 中的 MessageListenerContainer 都提供了自己的 ErrorMessageStrategy,用于在错误处理流程中将原始数据表示为 ErrorMessage。
Spring Integration 测试框架中新增了 MockMessageHandler,用于在单元测试中替换真实的 `MessageHandler`。
MessageHandler mockMessageHandler = mockMessageHandler() .handleNextAndReply(m -> m.getPayload().toString().toUpperCase());
this.mockIntegrationContext .substituteMessageHandlerFor("myServiceActivator", mockMessageHandler);
this.pojoServiceChannel.send(new GenericMessage<>("foo")); receive = this.results.receive(10000);
assertEquals("FOO", receive.getPayload());
Java DSL 现在通过 routeByException() 提供了更灵活的路由 API。
@Bean public IntegrationFlow exceptionTypeRouteFlow() { return f -> f .routeByException(r -> r .channelMapping(IllegalArgumentException.class, "illegalArgumentChannel") .channelMapping(RuntimeException.class, "runtimeExceptionChannel") .subFlowMapping(MessageHandlingException.class, sf -> sf.channel("messageHandlingExceptionChannel")) .defaultOutputChannel("exceptionRouterDefaultChannel")); }
提供了一个定制的 Jackson ObjectMapper,它可以识别 Message 和 MessageHeaders 的 JSON 序列化/反序列化。此功能对于允许配置自定义序列化器/反序列化器的组件非常有用,例如 RedisMessageStore。
RedisMessageStore store = new RedisMessageStore(redisConnectionFactory);
ObjectMapper mapper = JacksonJsonUtils.messagingAwareMapper();
GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer(mapper); store.setValueSerializer(serializer);
消息和消息组将以 JSON 格式存储在 Redis 中。
此外,JacksonJsonUtils.messagingAwareMapper() 提供了一个参数来配置 trustedPackages,以防御 CVE-2017-4995 漏洞。默认列表是:
java.util
java.lang
org.springframework.messaging.support
org.springframework.integration.support
org.springframework.integration.message
org.springframework.integration.store
可以使用 *(星号)进行配置,表示信任所有包。
TCP/IP 模块新增了 ThreadAffinityClientConnectionFactory,用于将客户端连接绑定到线程。
ReactiveChannel 已重命名为 FluxMessageChannel,以更好地反映其实现。
感谢社区中多位成员对框架的持续积极贡献;请 查看提交记录 并为他们点赞!
有关 5.0 版本更改的完整列表,请参阅参考手册的 新增功能 章节。