W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
從Spring Cloud Stream v2.1開始,定義流處理程序和源的另一種方法是使用對Spring Cloud函數(shù)的內(nèi)置支持,其中可以將它們表示為java.util.function.[Supplier/Function/Consumer]
類型的beans。
若要指定要綁定到綁定公開的外部目標(biāo)的功能bean,必須提供spring.cloud.stream.function.definition
屬性。
這是Processor應(yīng)用程序?qū)⑾⑻幚沓绦蚬_為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)并將其標(biāo)識為bean,用作消息處理程序,其“輸入”和“輸出”必須綁定到外部目標(biāo)由處理器綁定公開。
以下是支持源,處理器和接收器的簡單功能應(yīng)用程序的示例。
這是定義為java.util.function.Supplier
的Source應(yīng)用程序的示例
@SpringBootApplication @EnableBinding(Source.class) public static class SourceFromSupplier { public static void main(String[] args) { SpringApplication.run(SourceFromSupplier.class, "--spring.cloud.stream.function.definition=date"); } @Bean public Supplier<Date> date() { return () -> new Date(12345L); } }
這是定義為java.util.function.Function
的Processor應(yīng)用程序的示例
@SpringBootApplication @EnableBinding(Processor.class) public static class ProcessorFromFunction { public static void main(String[] args) { SpringApplication.run(ProcessorFromFunction.class, "--spring.cloud.stream.function.definition=toUpperCase"); } @Bean public Function<String, String> toUpperCase() { return s -> s.toUpperCase(); } }
這是一個(gè)定義為java.util.function.Consumer
的接收器應(yīng)用程序的示例
@EnableAutoConfiguration @EnableBinding(Sink.class) public static class SinkFromConsumer { public static void main(String[] args) { SpringApplication.run(SinkFromConsumer.class, "--spring.cloud.stream.function.definition=sink"); } @Bean public Consumer<String> sink() { return System.out::println; } }
使用此編程模型,您還可以從功能組合中受益,在該功能組合中,您可以從一組簡單的函數(shù)中動態(tài)組成復(fù)雜的處理程序。作為示例,我們將以下函數(shù)bean添加到上面定義的應(yīng)用程序中
@Bean public Function<String, String> wrapInQuotes() { return s -> "\"" + s + "\""; }
并修改spring.cloud.stream.function.definition
屬性以反映您打算從'toUpperCase'和'wrapInQuotes'編寫新函數(shù)的意圖。為此,可以使用Spring Cloud函數(shù)使用|
(管道)符號。因此,完成我們的示例,我們的屬性現(xiàn)在將如下所示:
—spring.cloud.stream.function.definition=toUpperCase|wrapInQuotes
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: