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://spring-docs.dev.org.tw/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 屬性,並啟用其中一個 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 中定向資料管道的建構模組的角色,我們強烈推薦我們的 使用 Spring Cloud Stream 進行即時物件偵測,作者為 Christian Tzolov


# 新發佈系列命名主題 鑑於 Spring Cloud Stream 團隊的大多數成員都居住在美麗而歷史悠久的美國賓夕法尼亞州費城,我們正在更改發佈系列的命名主題,以反映其社區豐富的歷史和文化遺產。因此,下一個發佈系列的名稱是 [Fishtown](https://en.wikipedia.org/wiki/Fishtown,_Philadelphia)(以前是特拉華河上西鰣魚捕撈業的中心),代表 Spring Cloud Stream 的 2.1.0 版本。```Fishtown.BUILD-SNAPSHOT ```

社群貢獻

我們的社群不斷成長。無論是參與公共論壇討論(例如 Stack OverflowGitter 等)還是 GitHub 中的程式碼貢獻,您的參與都非常寶貴且備受讚賞。因此,我們想藉此機會表彰以下 GitHub 使用者及其以 GutHib 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 社群中所有即將到來的活動。

查看所有