宣佈 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 Central 和 Spring Repo 中使用。釋出說明中包含與 Spring Boot、Spring Cloud、Spring AMQP 和 Spring for Apache Kafka 的版本相容性相關的資訊。


# 新功能、增強和改進 雖然更新的參考指南的“2.0 中的新增功能?”部分提供了更多詳細資訊,但我們想重點介紹幾項內容。

改進了內容型別協商和訊息轉換

Spring Cloud Stream 2.0 包括對內容型別協商功能進行的全面重新設計,以解決效能、靈活性以及最重要的方面——一致性問題。最近釋出的博文觸及了一些關鍵點,包括已完成的工作、預期結果以及它如何能幫助您。有關更多資訊,請參閱參考指南中的“內容型別協商”部分。

使用者定義的 Message Converters

如上一節所述,我們在簡化內容型別協商和訊息轉換方面付出了巨大的努力。因此,我們現在支援透過 Spring 的標準 org.springframework.messaging.converter.MessageConverters 註冊使用者定義的 Message Converters,以應對提供的訊息轉換功能不夠用的情況。您可以透過使用 @StreamMessageConverter 註冊自定義 Message Converter,如下所示:

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

public static class FooBarMessageConverter extends AbstractMessageConverter {
. . .
}

有關更多資訊,請參閱參考指南中的“使用者定義的 Message Converters”部分。

引入了輪詢消費者 (Polling Consumer)

輪詢消費者功能允許您控制訊息消費的速率,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 屬性,幷包含其各自的啟動器作為專案依賴項(如“Actuator 和 Web 現在是可選的”中所述),以啟用其中一個 Web 框架和 Actuator。

啟動您的應用程式,然後訪問以下 URL 以視覺化當前繫結:https://: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 exchange 或 Kafka topic)。透過設定 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 團隊的大部分成員都居住在美國賓夕法尼亞州費城這座美麗而歷史悠久的城市,我們正在改變釋出列車的命名主題,以反映其社群豐富的歷史和遺產。因此,下一個釋出列車名稱是 Fishtown(以前是特拉華河上的鯡魚捕撈業中心),標識為 Spring Cloud Stream 的 2.1.0 版本。Fishtown.BUILD-SNAPSHOT ```

社群貢獻

我們的社群不斷壯大。無論是參與公共論壇討論(如 Stack Overflow、Gitter 等)還是在 GitHub 上貢獻程式碼,您的參與都非常寶貴,我們對此深表感謝。因此,我們想借此機會表彰以下 GitHub 使用者及其以 GitHub pull requests 形式做出的貢獻:@jmax01@JacobASeverson@davidkalosi@oatesp@aldex32@bewithvk@rzukow@iNikem@Delmonte3161@hekonsek,以及更多。

我們還要特別感謝 Artem Bilan 領導的社群努力,他在支援 AWS Kinesis 繫結方面發揮了作用。


# 合作伙伴 特別感謝 Google 提供資源並與我們合作,將 Google cloud 技術整合到 Spring Cloud 中。正因如此,您現在可以使用 Google PubSub Binder 將 Spring Cloud Stream 應用程式與 Google Pub/Sub 整合。
一如既往,我們歡迎您的反饋和貢獻,請隨時透過 Stack Overflow 和 Gitter 聯絡我們。

如果您想提出問題或做出貢獻,請隨時透過 GitHub 專案站點與我們聯絡。

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有