SpringCloud 基于Reactor的處理程序

2023-11-26 16:23 更新

基于Reactor的處理程序可以具有以下參數(shù)類型:

  • 對(duì)于帶有@Input注釋的參數(shù),它支持Reactor Flux類型。入站Flux的參數(shù)化遵循與處理單個(gè)消息時(shí)相同的規(guī)則:可以是整個(gè)Message,可以是Message有效負(fù)載的POJO或由于以下原因而產(chǎn)生的POJO:基于Message內(nèi)容類型標(biāo)頭的轉(zhuǎn)換。提供了多個(gè)輸入。
  • 對(duì)于帶有Output注釋的參數(shù),它支持FluxSender類型,該類型將方法生成的Flux與輸出連接起來。一般而言,僅在該方法可以具有多個(gè)輸出時(shí)才建議將輸出指定為參數(shù)。

基于Reactor的處理程序支持Flux的返回類型。在這種情況下,必須用@Output進(jìn)行注釋。當(dāng)單個(gè)輸出Flux可用時(shí),建議使用該方法的返回值。

以下示例顯示了基于Reactor的Processor

@EnableBinding(Processor.class)
@EnableAutoConfiguration
public static class UppercaseTransformer {

  @StreamListener
  @Output(Processor.OUTPUT)
  public Flux<String> receive(@Input(Processor.INPUT) Flux<String> input) {
    return input.map(s -> s.toUpperCase());
  }
}

使用輸出參數(shù)的同一處理器看起來像以下示例:

@EnableBinding(Processor.class)
@EnableAutoConfiguration
public static class UppercaseTransformer {

  @StreamListener
  public void receive(@Input(Processor.INPUT) Flux<String> input,
     @Output(Processor.OUTPUT) FluxSender output) {
     output.send(input.map(s -> s.toUpperCase()));
  }
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)