宣布 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 的版本兼容性的相关信息。


#新功能、增强功能和改进 更新后的 [2.0 版的新增功能?] 部分的[参考指南](https://docs.springframework.org.cn/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/) 中提供了更多详细信息,但我们想重点介绍以下几点。

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

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 属性,并通过在项目中包含其各自的启动器作为依赖项来启用其中一个 Web 框架和 Actuator(如 Actuator 和 Web 现在是可选的 中所述)。

启动您的应用程序并访问以下 URL 以可视化当前绑定:https://127.0.0.1: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 编写的 使用 Spring Cloud Stream 进行实时目标检测


新版本列车命名主题

鉴于大部分 Spring Cloud Stream 团队位于风景秀丽、历史悠久的宾夕法尼亚州费城 (美国),我们将更改版本列车命名主题,以反映其街区的丰富历史和遗产。因此,下一个版本列车的名称为 [费城费殊镇](https://en.wikipedia.org/wiki/Fishtown,_Philadelphia)(以前是特拉华河上鲱鱼捕捞业的中心),对应 Spring Cloud Stream 的 2.1.0 版本。Fishtown.BUILD-SNAPSHOT ```

社区贡献

我们的社区不断壮大。无论是参与公共论坛讨论(例如 Stack OverflowGitter 等),还是在 GitHub 上贡献代码,您的参与都弥足珍贵,我们深表感谢。因此,我们想借此机会感谢以下 GitHub 用户及其通过 GitHub 拉取请求做出的贡献:@jmax01@JacobASeverson@davidkalosi@oatesp@aldex32@bewithvk@rzukow@iNikem@Delmonte3161@hekonsek 以及许多其他用户。

我们还要特别感谢由我们自己的 Artem Bilan 带领的社区团队为支持 AWS Kinesis 绑定器所做的贡献。


合作伙伴

特别感谢 Google 提供资源并与我们合作,将 [Google Cloud](https://github.com/spring-cloud/spring-cloud-gcp) 技术与 Spring Cloud 集成。由于他们的努力,您现在可以使用 [Google PubSub 绑定器](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 社区所有即将举行的活动。

查看全部