宣佈 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.springframework.tw/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/)的“[2.0 有哪些新內容?](https://docs.springframework.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 屬性,並透過在專案中包含其各自的 starter 作為依賴項(如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 交換機或 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 社群所有即將舉辦的活動。

檢視全部