宣布 Spring Cloud Stream Elmhurst.RELEASE (2.0.0.RELEASE) 正式发布

工程 | Oleg Zhurakousky | 2018 年 4 月 10 日 | ...

经过漫长而激动人心的旅程,我们很高兴地宣布 Spring Cloud Stream Elmhurst 发布系列 - Elmhurst.RELEASE/2.0.0.RELEASE 正式发布。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-dependencies</artifactId>
            <version>Elmhurst.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Spring Cloud Stream Elmhurst (2.0.0.RELEASE) 可在 Maven CentralSpring Repo 中使用。其发布说明包含有关与 Spring Boot、Spring Cloud、Spring AMQP 和 Spring for Apache Kafka 的版本兼容性的相关信息。


# 新功能、增强和改进 虽然更新后的[参考指南](https://docs.springjava.cn/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/)的“[2.0 有哪些新内容?](https://docs.springjava.cn/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/#_what_s_new_in_2_0)”一节提供了更多详细信息,但我们想重点介绍几项。

改进的内容类型协商和消息转换

Spring Cloud Stream 2.0 对内容类型协商功能进行了全面改进,以解决性能、灵活性,最重要的是,一致性问题。最近发布的博客文章触及了已完成工作、预期内容以及它如何帮助您的一些关键点。更多信息可在参考指南的内容类型协商一节中找到。

用户定义的消息转换器

如前一节所述,在简化内容类型协商和消息转换方面投入了大量工作。这项工作的结果是,我们现在支持注册用户定义的消息转换器(通过 Spring 的标准 org.springframework.messaging.converter.MessageConverters),以应对提供的消息转换功能不足的情况。您可以使用 @StreamMessageConverter 注册自定义消息转换器,如下所示

@Bean
@StreamMessageConverter
public FooBarMessageConverter fooBarMessageConverter() {
	return new FooBarMessageConverter(MimeType.valueOf("foo/bar"));
}

public static class FooBarMessageConverter extends AbstractMessageConverter {
. . .
}

更多信息可在参考指南的用户定义的消息转换器一节中找到。

引入了轮询消费者

轮询消费者功能让您可以控制消息消费速率,Gary Russell 最近发布的博客提供了更多信息,可归纳为两个简单的步骤

  1. 定义一个 PollableMessageSource 绑定
@Input
PollableMessageSource inputSource();
  1. 开始在您的应用中使用它
@Autowire
PollableMessageSource inputSource;
. . .
inputSource.poll(System.out::println);

更多信息可在参考指南的使用轮询消费者一节中找到。

Actuator 和 Web 现在是可选的

为了简化占用空间并提供更大的灵活性来选择 Web 框架(命令式或 webflux),我们将 Spring Boot Actuator 和 Web 都设为可选依赖项,默认不包含它们。但是,如果需要,您可以通过包含以下依赖项元素将其添加为应用程序依赖项

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

新的绑定 Actuator 端点

现在,您可以使用新的 actuator 端点来可视化和控制绑定。

设置 management.endpoints.web.exposure.include=bindings Boot 属性,并通过在项目中包含其各自的 starter 作为依赖项(如Actuator 和 Web 现在是可选的中所述)来启用其中一个 web 框架和 actuator

启动您的应用程序并访问以下 URL 以可视化当前绑定:http://localhost:8080/actuator/bindings

通过该 URL,您可以接收到类似以下的输出

[
  {
    name: "myDestination",
    group: "myGroup",
    pausable: false,
    state: "running",
    extendedInfo: {
      bindingDestination: "RabbitConsumerDestination{queue=Queue [name=myDestination.myGroup, durable=true, . . .}",
      ExtendedConsumerProperties: {
        concurrency: 1,
        instanceCount: 1,
        maxAttempts: 3,
        backOffInitialInterval: 1000,
        backOffMaxInterval: 10000,
        backOffMultiplier: 2,
        extension: {
          exchangeType: "topic",
          declareExchange: true,
          . . .

您还可以可视化单个绑定并控制它们的生命周期(例如停止、启动、暂停和恢复)。更多详细信息可在用户指南的绑定可视化和控制一节中找到。

Micrometer 支持

自 Boot 2.0 以来,指标支持一直基于 Micrometer。Micrometer 捕获应用程序指标,而 Spring Cloud Stream 则支持将这些应用程序指标发布到预定义的目标(例如 Rabbit 交换机或 Kafka 主题)。通过设置 spring.cloud.stream.bindings.applicationMetrics.destination=myMetricDestination 属性,您就请求将指标消息发布到 myMetricDestination。发布的消息采用 JSON 格式,看起来与以下内容类似

{
  "name": "application",
  "createdTime": "2018-03-23T14:48:12.700Z",
  "properties": {
  },
  "metrics": [
    {
      "id": {
        "name": "spring.integration.send",
        "tags": [
          . . .
          {
            "key": "name",
            "value": "input"
          },
          . . .
          {
            "key": "type",
            "value": "channel"
          }
        ],
        "type": "TIMER",
        "description": "Send processing time",
        "baseUnit": "milliseconds"
      },
      "timestamp": "2018-03-23T14:48:12.697Z",
      "sum": 130.340546,
      "count": 6,
      "mean": 21.72342433333333,
      "upper": 116.176299,
      "total": 130.340546
      }
  ]
}

Spring Cloud Dataflow 及其 UI 是这些信息的使用者之一,它显示消息速率以及其他指标数据。更多详细信息可在参考指南的指标发射器一节中找到。

使用 Apache Kafka Streams 进行流处理

我们自己的 Soby Chacko 在增强使用 Apache Kafka Streams 构建流应用程序的支持方面做了出色的工作。一些值得一提的核心功能包括

  • Kafka Streams 与基于 Kafka 通道的绑定之间的互操作性
  • 多种 Kafka Streams 类型(例如 KStreamKTable)作为可绑定组件
  • 分支支持
  • 交互式查询支持
  • 等等...

正当我们完成这项新功能时,我们孜孜不倦的同事兼朋友 Josh Long 整理了一个快速演示/教程,展示了使用 Kafka Streams 和 Spring Cloud Stream 构建流应用程序的一些技巧和窍门。

新的改进版快速入门指南和示例

这本新的快速入门指南专门设计为不超过 5 分钟完成,几乎不需要 Spring Cloud Stream 的先验知识或经验。它还展示了与 Spring Cloud Stream 2.0 和 Spring Boot 2.0 相关的 Spring Initializr 更新。

一旦熟悉了核心概念,请随时探索并使用我们广泛且不断增长的示例库,这些示例展示了传统和响应式风格的流应用程序。

如果您想了解 Spring Cloud Stream 作为 Spring Cloud Dataflow 中定向数据管道构建块的作用,我们强烈推荐我们自己的 Christian Tzolov 的文章 Real-time Object-Detection With Spring Cloud Stream


# 新的发布系列命名主题 鉴于 Spring Cloud Stream 团队的大部分成员居住在美丽而历史悠久的宾夕法尼亚州费城(美国),我们正在更改发布系列命名主题,以反映其社区的丰富历史和遗产。因此,下一个发布系列的名称是 [Fishtown](https://en.wikipedia.org/wiki/Fishtown,_Philadelphia)(曾是特拉华河上的鲱鱼捕捞中心),对应于 Spring Cloud Stream 的 2.1.0 版本。 ```Fishtown.BUILD-SNAPSHOT ```

社区贡献

我们的社区不断壮大。无论是参与公共论坛讨论(例如 Stack OverflowGitter 等)还是在 GitHub 贡献代码,您的参与都无比宝贵,我们非常感激。因此,我们想借此机会感谢以下 GitHub 用户及其通过 GitHub pull request 形式做出的贡献:@jmax01@JacobASeverson@davidkalosi@oatesp@aldex32@bewithvk@rzukow@iNikem@Delmonte3161@hekonsek 等等。

我们还要特别表彰由我们自己的 Artem Bilan 领导的社区工作,他们为支持 AWS Kinesis binder 做出了贡献。


# 合作伙伴 特别感谢 Google 提供了资源并与我们合作将 [Google cloud](https://github.com/spring-cloud/spring-cloud-gcp) 技术与 Spring Cloud 集成。由于他们的努力,您现在可以使用 [Google PubSub Binder](https://github.com/spring-cloud/spring-cloud-gcp/tree/master/spring-cloud-gcp-pubsub-stream-binder) 将 Spring Cloud Stream 应用程序与 [Google Pub/Sub](https://cloud.google.com/pubsub/docs/overview) 集成。
一如既往,我们欢迎反馈和贡献,请在 [Stack Overflow](https://stackoverflow.com/tags/spring-cloud-stream) 和 [Gitter](https://gitter.im/spring-cloud/spring-cloud-stream) 上联系我们。

如果您想提出问题或做出贡献,请随时通过 GitHub 项目网站联系我们

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

抢占先机

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

了解更多

获取支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,一站式订阅。

了解更多

即将举办的活动

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

查看全部