先行一步
VMware 提供培訓和認證,助力您的進步。
瞭解更多我們很高興地宣佈 Spring Cloud Stream Fishtown 釋出列車的第二個里程碑版本 - Fishtown.M2/2.1.0.M2。
Spring Cloud Stream Fishtown 2.1.0.M2 已在 Spring Milestone 倉庫中可用。該版本的釋出說明包含了與 Spring Boot、Spring Cloud、Spring AMQP 和 Spring for Apache Kafka 的版本相容性相關資訊。
以下部分簡要概述了此版本包含的特性和改進。
此版本的主要亮點是引入了一種新的程式設計模型,該模型使用 Spring Cloud Function 作為定義 stream handlers 和 sources 的替代方案,它們現在可以表示為型別為 java.util.function.[Supplier/Function/Consumer]
的 bean
要指定將哪個函式式 bean 繫結到繫結暴露的外部目標,必須提供 spring.cloud.stream.function.definition
屬性。
這是一個 Processor 應用程式將訊息處理器暴露為 java.util.function.Function
的示例
@SpringBootApplication
@EnableBinding(Processor.class)
public class MyFunctionBootApp {
public static void main(String[] args) {
SpringApplication.run(MyFunctionBootApp.class,
"--spring.cloud.stream.function.definition=toUpperCase");
}
@Bean
public Function<String, String> toUpperCase() {
return s -> s.toUpperCase();
}
}
在上面,我們只是簡單地定義了一個型別為 java.util.function.Function
的 bean,命名為 toUpperCase,並將其標識為用作訊息處理器的 bean,其 input 和 output 將繫結到 Processor 繫結暴露的外部目標。
使用這種程式設計模型,您還可以受益於 函式組合,您可以從一組簡單函式動態組合複雜的處理器。例如,將以下函式 bean 新增到上面定義的應用程式中
@Bean
public Function<String, String> wrapInQuotes() {
return s -> "\"" + s + "\"";
}
並修改 spring.cloud.stream.function.definition
屬性,以反映您打算從 toUpperCase 和 wrapInQuotes 組合一個新的函式。為此,Spring Cloud Function 允許您使用 |
(管道) 符號。因此,為完成我們的示例,我們的屬性現在看起來像這樣
--spring.cloud.stream.function.definition=toUpperCase|wrapInQuotes
作為持續改進程式碼質量並評估框架元件合同正確性的努力的一部分,我們有一個新的 驗收測試專案 (Acceptance Test project),用於在 Cloud Foundry 和 Kubernetes 上引導 Spring Cloud Stream 應用程式。這些測試每天在全新環境上執行多次。我們希望這能為社群和客戶在目標平臺上構建更多自動化流水線提供基礎。
在此版本中,我們還想重點介紹最近釋出的 Kinesis 繫結器
其他各種增強和錯誤修復:核心 Rabbit 繫結器 Kafka 繫結器
注意
如果應用程式是從 Spring Initializr 建立的,它們需要在 maven 依賴管理中,在 spring-cloud BOM 宣告之前新增此 BOM 片段,否則您將使用最新的 snapshot 版本(這可能沒問題,因為它會包含 M2 中的所有工作)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-dependencies</artifactId>
<version>Fishtown.M2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
M3 版本計劃在 9 月底釋出,主要將包含新的繫結特性以及更多支援 Spring Cloud Function 作為程式設計模型的特性和改進。
一如既往,我們歡迎反饋和貢獻,請透過 Stackoverflow、GitHub 或 Gitter 聯絡我們。