SpringCloud 簡介Spring Cloud Stream

2023-11-24 15:16 更新

Spring Cloud Stream是用于構建消息驅動的微服務應用程序的框架。Spring Cloud Stream在Spring Boot的基礎上創(chuàng)建了獨立的生產級Spring應用程序,并使用Spring Integration提供了到消息代理的連接。它提供了來自多家供應商的中間件的合理配置,并介紹了持久性發(fā)布-訂閱語義,使用者組和分區(qū)的概念。

您可以在應用程序中添加@EnableBinding批注,以立即連接到消息代理,還可以在方法中添加@StreamListener,以使其接收流處理的事件。以下示例顯示了接收外部消息的接收器應用程序:

@SpringBootApplication
@EnableBinding(Sink.class)
public class VoteRecordingSinkApplication {

  public static void main(String[] args) {
    SpringApplication.run(VoteRecordingSinkApplication.class, args);
  }

  @StreamListener(Sink.INPUT)
  public void processVote(Vote vote) {
      votingService.recordVote(vote);
  }
}

@EnableBinding批注將一個或多個接口作為參數(shù)(在這種情況下,該參數(shù)是單個Sink接口)。接口聲明輸入和輸出通道。Spring Cloud Stream提供了Source,SinkProcessor接口。您也可以定義自己的接口。

以下清單顯示了Sink接口的定義:

public interface Sink {
  String INPUT = "input";

  @Input(Sink.INPUT)
  SubscribableChannel input();
}

@Input注釋標識一個輸入通道,接收到的消息通過該輸入通道進入應用程序。@Output注釋標識一個輸出通道,已發(fā)布的消息通過該輸出通道離開應用程序。@Input@Output批注可以使用頻道名稱作為參數(shù)。如果未提供名稱,則使用帶注釋的方法的名稱。

Spring Cloud Stream為您創(chuàng)建接口的實現(xiàn)。您可以通過自動裝配在應用程序中使用它,如以下示例所示(來自測試用例):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = VoteRecordingSinkApplication.class)
@WebAppConfiguration
@DirtiesContext
public class StreamApplicationTests {

  @Autowired
  private Sink sink;

  @Test
  public void contextLoads() {
    assertNotNull(this.sink.input());
  }
}
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號