取得领先
VMware 提供培训和认证,以加速您的进步。
了解更多我们很高兴地宣布 Spring Integration Java DSL 的 Milestone 2 现在可以从 Milestone Repository 下载
Gradle 用户请使用
compile "org.springframework.integration:spring-integration-java-dsl:1.1.0.M2"
Maven 用户请使用
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-java-dsl</artifactId>
<version>1.1.0.M2</version>
</dependency>
自 Milestone 1 以来,没有太多新功能,但以下是最重要的注意事项
Spring Integration Java DSL 1.1 现在基于 Spring Integration 4.2,成为即将到来的 Spring IO 2.0 的一部分。 Java DSL 的 1.1 版本不再与 Spring Integration 4.1.x 兼容。
我们现在为 Spring Integration Kafka 适配器提供 Kafka
命名空间工厂。 新的 Spring Integration Kafka 1.2 发布 以及对 Apache Kafka 0.8.2
的升级带来了一些重大更改。 因此,Java DSL Milestone 2 的 1.1 版本不再与先前版本的 Spring Integration Kafka 和 Apache Kafka 兼容。
Spring Integration HTTP 适配器现在由其特定的 Http
命名空间工厂覆盖。 请查看我们的经典 HTTP 代理示例,但已经是 Java DSL 形式
@Bean
public IntegrationFlow httpProxyFlow() {
return IntegrationFlows
.from((MessagingGateways g) ->
g.httpGateway("/proxy")
.requestMapping(r -> r.params("name"))
.payloadFunction(httpEntity ->
((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes())
.getRequest()
.getQueryString()))
.handleWithAdapter(a ->
a.httpGateway(m ->
String.format("http://target/service?%s", m.getPayload()))
.expectedResponseType(String.class))
.get();
}
我们很高兴地宣布 Spring Integration 开始提供与 Reactive Streams 的集成,并且 Publisher
的支持直接在 Java DSL 中提供
@Bean
public Publisher<Message<String>> reactiveFlow() {
return IntegrationFlows
.from(() -> new GenericMessage<>("a,b,c,d,e,f"))
.split(String.class, p -> p.split(","))
.toReactivePublisher();
}
正如您所见,从 Spring Integration 世界进入 Reactive Streams 世界非常简单。 org.reactivestreams.Publisher
bean 之后可以用作 Reactive 程序的事件源,例如使用 Project Reactor 实现
@Autowired
@Qualifier("reactiveFlow")
private Publisher<Message<String>> publisher;
....
List<String> results = new ArrayList<>();
CountDownLatch latch = new CountDownLatch(6);
Streams.wrap(this.publisher)
.map(m -> m.getPayload().toUpperCase())
.consume(p -> {
results.add(p);
latch.countDown();
});
另一个方向 - 从 Reactive Stream 到 Spring Integration - 也足够简单(从 Reactor 的角度来看)
.consume(v -> messagingTemplate().convertAndSend(reactorStreamResult(), v));
我们将在未来的版本中考虑 MessageChannel
实现的一些 org.reactivestreams.Subscriber
选项。
已经完成其他重要的重构和弃用,以使 DSL 更加流畅、方便和灵活,例如
FileSplitter
组件的 Files.splitter()
工厂方法;MessageSessionCallback
的 (S)Ftp.outboundGateway()
(Spring Integration 4.2 功能);.aggregate()
和 .resequence()
EIP 方法等。##SpringOne 2GX 2015 即将到来! 在 下周在华盛顿特区举行的 SpringOne2GX 上预订您的席位。 这是第一手了解所有进展情况并提供直接反馈的最佳机会。
来我的 演讲,从 Spring Integration Java DSL 的第一批手中获取更多信息,并帮助我使这个框架更好!
项目页面 | JIRA | 问题 | [贡献] (https://github.com/spring-projects/spring-integration/blob/master/CONTRIBUTING.md) | StackOverflow (spring-integration
标签)