搶先一步
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 屬性,並啟用其中一個 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,
. . .
您還可以視覺化個別綁定並控制其生命週期(例如停止、啟動、暫停和恢復)。更多詳細資訊可以在使用者指南的 綁定視覺化和控制 章節中找到。
自 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 中定向資料管道的建構模組的角色,我們強烈推薦我們的 使用 Spring Cloud Stream 進行即時物件偵測,作者為 Christian Tzolov。
我們的社群不斷成長。無論是參與公共論壇討論(例如 Stack Overflow、Gitter 等)還是 GitHub 中的程式碼貢獻,您的參與都非常寶貴且備受讚賞。因此,我們想藉此機會表彰以下 GitHub 使用者及其以 GutHib pull request 形式提供的貢獻:@jmax01
、@JacobASeverson
、@davidkalosi
、@oatesp
、@aldex32
、@bewithvk
、@rzukow
、@iNikem
、@Delmonte3161
、@hekonsek
以及更多。
我們還要特別表揚由我們的 Artem Bilan 領導的社群努力,他們在支援 AWS Kinesis binder 方面盡了一份力量。
如果您想提出問題或做出貢獻,請隨時在 GitHub 專案網站上與我們聯繫