領先一步
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 註冊使用者定義的 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”部分。
輪詢消費者功能允許您控制訊息消費的速率,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 屬性,幷包含其各自的啟動器作為專案依賴項(如“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 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,它顯示訊息速率以及其他指標資料。有關更多詳細資訊,請參閱參考指南中的“指標發射器”部分。
我們自己的 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 的“使用 Spring Cloud Stream 進行即時物件檢測”一文。
我們的社群不斷壯大。無論是參與公共論壇討論(如 Stack Overflow、Gitter 等)還是在 GitHub 上貢獻程式碼,您的參與都非常寶貴,我們對此深表感謝。因此,我們想借此機會表彰以下 GitHub 使用者及其以 GitHub pull requests 形式做出的貢獻:@jmax01、@JacobASeverson、@davidkalosi、@oatesp、@aldex32、@bewithvk、@rzukow、@iNikem、@Delmonte3161、@hekonsek,以及更多。
我們還要特別感謝 Artem Bilan 領導的社群努力,他在支援 AWS Kinesis 繫結方面發揮了作用。
如果您想提出問題或做出貢獻,請隨時透過 GitHub 專案站點與我們聯絡。