本節將詳細介紹如何使用Spring Cloud Stream。它涵蓋了建立和執行流應用程式等主題。 介紹Spring Cloud Stream Spring Cloud Stream是構建訊息驅動的微服務應用程式的框架。Spring Cloud Stream基於Spring Boot建立獨立的生產級Spring應用程式,並使用Spring Integration提供與訊息代理的連線。它提供了來自幾家供應商的中介軟體的意見配置,介紹了持久釋出訂閱語義,消費者組和分割槽的概念。
您可以將@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註釋需要一個或多個介面作為引數(在這種情況下,該引數是單個Sink介面)。介面宣告輸入和/或輸出通道。Spring Cloud Stream提供了介面Source,Sink和Processor; 您還可以定義自己的介面。
以下是Sink介面的定義:
public interface Sink { String INPUT = "input";
@Input(Sink.INPUT) SubscribableChannel input(); } @Input註釋標識輸入通道,通過該輸入通道接收到的訊息進入應用程式; @Output註釋標識輸出通道,釋出的訊息將通過該通道離開應用程式。@Input和@Output註釋可以使用頻道名稱作為引數; 如果未提供名稱,將使用註釋方法的名稱。
Spring Cloud Stream將為您建立一個介面的實現。您可以在應用程式中通過自動連線來使用它,如下面的測試用例示例。
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = VoteRecordingSinkApplication.class) @WebAppConfiguration @DirtiesContext public class StreamApplicationTests {
@Autowired private Sink sink;
@Test public void contextLoads() { assertNotNull(this.sink.input()); } } 主要概念 Spring Cloud Stream提供了一些簡化了訊息驅動的微服務應用程式編寫的抽象和原語。本節概述了以下內容:
Spring Cloud Stream的應用模型
Binder抽象
持續的釋出 - 訂閱支援
消費者群體支援
分割槽支援
一個可插拔的Binder API
原始碼來源:http://minglisoft.cn/honghu/technology.html