搶佔先機
VMware 提供培訓和認證,助您加速進步。
瞭解更多經過漫長而激動人心的旅程,我們很高興地宣佈 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 的版本相容性的相關資訊。
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 最近釋出的部落格提供了更多資訊,可歸納為兩個簡單的步驟
@Input
PollableMessageSource inputSource();
@Autowire
PollableMessageSource inputSource;
. . .
inputSource.poll(System.out::println);
更多資訊可在參考指南的使用輪詢消費者一節中找到。
為了簡化佔用空間並提供更大的靈活性來選擇 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 端點來視覺化和控制繫結。
設定 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,
. . .
您還可以視覺化單個繫結並控制它們的生命週期(例如停止、啟動、暫停和恢復)。更多詳細資訊可在使用者指南的繫結視覺化和控制一節中找到。
自 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 是這些資訊的使用者之一,它顯示訊息速率以及其他指標資料。更多詳細資訊可在參考指南的指標發射器一節中找到。
我們自己的 Soby Chacko 在增強使用 Apache Kafka Streams 構建流應用程式的支援方面做了出色的工作。一些值得一提的核心功能包括
KStream
和 KTable
)作為可繫結元件正當我們完成這項新功能時,我們孜孜不倦的同事兼朋友 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。
我們的社群不斷壯大。無論是參與公共論壇討論(例如 Stack Overflow、Gitter 等)還是在 GitHub 貢獻程式碼,您的參與都無比寶貴,我們非常感激。因此,我們想借此機會感謝以下 GitHub 使用者及其透過 GitHub pull request 形式做出的貢獻:@jmax01
、@JacobASeverson
、@davidkalosi
、@oatesp
、@aldex32
、@bewithvk
、@rzukow
、@iNikem
、@Delmonte3161
、@hekonsek
等等。
我們還要特別表彰由我們自己的 Artem Bilan 領導的社群工作,他們為支援 AWS Kinesis binder 做出了貢獻。
如果您想提出問題或做出貢獻,請隨時透過 GitHub 專案網站聯絡我們