Spring Integration Java DSL 1.1 M2 已发布

发布 | Artem Bilan | 2015 年 9 月 10 日 | ...

我们很高兴地宣布 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 4.2 基础

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 1.2.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 兼容。

HTTP 命名空间工厂

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();
}

Reactive Streams 支持

我们很高兴地宣布 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 标签)

获取 Spring 新闻邮件

随时关注 Spring 新闻邮件

订阅

取得领先

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部