领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我们高兴地宣布,Spring Integration Java DSL 的 Milestone 2 版本现已从Milestone 仓库提供下载。
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 的一部分。1.1 版本的 Java DSL 不再兼容 Spring Integration 4.1.x。
我们现在为 Spring Integration Kafka 适配器提供Kafka
命名空间工厂。新的 Spring Integration Kafka 1.2 版本 以及 Apache Kafka 0.8.2
的升级带来了一些重大更改。因此,这个 1.1 的 Java DSL Milestone 2 版本不再兼容之前的 Spring Integration Kafka 和 Apache Kafka 版本。
Spring Integration HTTP 适配器现在已包含其特定的Http
命名空间工厂。请参考我们基于 Java DSL 的经典 HTTP 代理示例。
@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 正在开始提供与响应式流的集成,并且直接在 Java DSL 中提供了对Publisher
的支持。
@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 世界转向响应式流世界非常简单。org.reactivestreams.Publisher
bean 之后可以用作响应式程序的事件源,例如使用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();
});
另一个方向——从响应式流到 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
标签)