取得領先優勢
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 作為定義串流處理常式和來源的替代方案,現在可以將其表示為 java.util.function.[Supplier/Function/Consumer]
類型的 bean
若要指定要綁定到繫結公開的外部目的地之功能 bean,您必須提供 spring.cloud.stream.function.definition
屬性。
以下是將訊息處理常式公開為 java.util.function.Function
的 Processor 應用程式範例
@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();
}
}
在上述範例中,我們僅定義一個名為 *toUpperCase* 的 java.util.function.Function
類型 bean,並將其識別為要用作訊息處理常式的 bean,其*輸入*和*輸出*將繫結到 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
作為持續努力改進程式碼品質並評估框架元件的合約正確性的一部分,我們有一個新的 驗收測試專案,用於在 Cloud Foundry 和 Kubernetes 上引導 Spring Cloud Stream 應用程式。 這些測試每天在重新鋪設的環境中執行多次。 我們希望這能為社群和客戶提供一個基礎,以便在目標平台上建構更多的自動化管道。
透過此版本,我們也想重點介紹最近發布的 Kinesis Binder
各種其他增強功能和錯誤修正:Core Rabbit Binder Kafka Binder
注意
如果應用程式是從 Spring Initializr 建立的,它們需要在 spring-cloud BOM 宣告之前在 maven 依賴套件管理中新增此 BOM 片段,否則您最終會得到最新的快照(這可能沒問題,因為它會包含 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 與我們聯繫。