领先一步
VMware 提供培训和认证,助力您的职业发展。
了解更多我很高兴地宣布,Spring Integration 的 Java DSL 1.2 M1
现在已经可用!
首先,我要感谢所有创建议题、提交拉取请求、提供反馈或仅在 StackOverflow 上提问的人。没有社区,我们就不会成为今天如此成功的项目!
构件 org.springframework.integration:spring-integration-java-dsl:1.2.0.M1
已在里程碑仓库中可用。所以,试试看吧,并且欢迎在GH 议题中提出任何反馈!
本次迭代的一些亮点
基于最近发布的 Spring for Apache Kafka 项目,引入了一个新的 Kafka09
工厂。这是一个简单的 Java DSL 工厂,用于生成基于 Spring for Apache Kafka 基础的适配器的 IntegrationComponentSpec
流式 API 构建器。现有的用于支持 Apache Kafka 0.8
的 Kafka
工厂仍然存在,以实现向后兼容。
在许多情况下,最好根据系统状态甚至在某些业务功能调用期间指定集成流。甚至可以在执行后使其不稳定。为此,引入了 IntegrationFlowContext
组件,以允许手动控制 IntegrationFlow
。
@Autowired
private IntegrationFlowContext context;
...
IntegrationFlow myFlow = f -> f
.<String, String>transform(String::toUpperCase)
.transform("Hello, "::concat);
String flowId = this.context.register(myFlow);
MessagingTemplate messagingTemplate = this.context.messagingTemplateFor(flowId);
assertEquals("Hello, SPRING",
messagingTemplate.convertSendAndReceive("spring", String.class));
this.context.remove(flowId);
有关更多信息,请参阅 IntegrationFlowContext
的 JavaDoc。
为了方便地以 Spring Integration 的方式记录消息旅程(类似于 <logging-channel-adapter>
),引入了一个新的 log()
操作符。在其底层,它仅由 WireTap
ChannelInterceptor
和作为订阅者的 LoggingHandler
表示。它负责记录进入下一个端点的消息。
.filter(...)
.log(LoggingHandler.Level.ERROR, "test.category", m -> m.getHeaders().getId())
.route(...)
在此示例中,只有通过过滤器且在路由之前的消息,其 id
头部将以 ERROR
级别记录到 "test.category" 日志分类。
为 MessageChannelSpec
构建器引入了 .wireTap()
流式 API。现在,目标配置从 Java DSL 的使用中获益良多。
@Bean
public QueueChannelSpec myChannel() {
return MessageChannels
.queue()
.wireTap("loggingFlow.input");
}
@Bean
public IntegrationFlow loggingFlow() {
return f -> f.log();
}
对于 bean 的纯 Java 实例化来说,将路由键设置为任何期望的类型并避免将所有内容转换为 String
看起来非常自然。此外,类型放宽使我们的配置具有泛型感知能力。
@Bean
public IntegrationFlow payloadTypeRouteFlow() {
return f -> f
.<Object, Class>route(Object::getClass, m -> m
.channelMapping(String.class, "stringsChannel")
.channelMapping(Integer.class, "integersChannel"));
}
有关 1.2.0.M1
版本的更多信息,请参阅提交历史。
维护版本 1.1.3
也已发布,其中包含几个严重的 bug 修复以及与 Spring Integration 4.3 的兼容性。构件 org.springframework.integration:spring-integration-java-dsl:1.1.3.RELEASE
在 repo.spring.io 和 Maven Central 中可用。建议所有人升级,特别是如果您使用了 JMS
工厂和实现了 ApplicationListener
的 bean。
我们预计版本 1.2
的下一个 Milestone 2 很快就会发布,大概在几周内,RC 版本和最终发布将在八月中旬左右。同时,我们将把 spring-integration-java-dsl
项目合并到 Spring Integration Core 项目中,使用 5.0
版本和 Java 8 代码库。当前的 1.2
版本仍将受到支持,但仅限于 bug 修复。