領先一步
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。
要指定要繫結到 bindings 公開的外部目標(destination)的函式 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();
}
}
在上面的示例中,我們簡單地定義了一個名為toUpperCase的java.util.function.Function型別的 bean,並將其標識為用作訊息處理程式的 bean,其input和output將繫結到 Processor binding 公開的外部目標。
使用這種程式設計模型,您還可以受益於函式組合,您可以從一組簡單的函式動態地組合複雜的處理程式。例如,將以下函式 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 專案,用於在 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 計劃於九月底釋出,主要包含新的繫結功能以及更多圍繞支援 Spring Cloud Function 作為程式設計模型的功能和改進。
一如既往,我們歡迎反饋和貢獻,因此請透過 Stackoverflow 或 GitHub 或 Gitter 與我們聯絡。