领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我很高兴地宣布,Java DSL for Spring Integration 1.2 M1 现已发布!
首先,我想感谢所有创建 issue、提交 Pull Request、提供反馈或在 StackOverflow 上提问的人。没有社区,就没有我们今天取得的成功!
org.springframework.integration:spring-integration-java-dsl:1.2.0.M1 伪件可在 Milestone 仓库 中找到。请尝试使用,并随时就任何反馈提出 GH issue!
当前迭代的一些亮点
基于最近发布的 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 JavaDocs。
为了方便以 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();
}
拥有纯 Java 实例化的 Bean,可以自然地让路由键成为任何期望的类型,并避免将所有内容转换为 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 也已发布,修复了一些棘手的错误,并兼容 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 版本很快就会推出第二个里程碑版本,几周后将推出 RC 版本,并在 8 月中旬左右发布。同时,我们将把 spring-integration-java-dsl 项目合并到 Spring Integration Core 中,版本为 5.0,并使用 Java 8 代码库。当前的 1.2 版本仍将得到支持,但仅限于 bug 修复。