java版springcloud b2b2c社交電商多使用者商城系統b2b2c-Spring Cloud Stream 介紹
介紹Spring Cloud Stream
Spring Cloud Stream是構建訊息驅動的微服務應用程式的框架。Spring Cloud Stream基於Spring Boot建立獨立的生產級Spring應用程式,並使用Spring Integration提供與訊息代理的連線。瞭解springcloud架構可以加求求:三五三六二四七二五九,它提供了來自幾家供應商的中介軟體的意見配置,介紹了持久釋出訂閱語義,消費者組和分割槽的概念。
您可以將@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@DirtiesContextpublic class StreamApplicationTests { @Autowired private Sink sink; @Test public void contextLoads() { assertNotNull(this.sink.input()); }}
程式設計模型
Binder
Binder 是 Spring Cloud Stream 的一個抽象概念,是應用與訊息中介軟體之間的粘合劑。
目前 Spring Cloud Stream 實現了 Kafka 和 Rabbit MQ 的binder。透過 binder ,可以很方便的連線中介軟體,可以動態的改變訊息的destinations(對應於 Kafka 的topic,Rabbit MQ 的 exchanges),這些都可以透過外部配置項來做到。甚至可以任意的改變中介軟體的型別而不需要修改一行程式碼。
Publish-Subscribe
訊息的釋出(Publish)和訂閱(Subscribe)是事件驅動的經典模式。Spring Cloud Stream 的資料互動也是基於這個思想。生產者把訊息透過某個 topic 廣播出去(Spring Cloud Stream 中的 destinations)。其他的微服務,透過訂閱特定 topic 來獲取廣播出來的訊息來觸發業務的進行。
這種模式,極大的降低了生產者與消費者之間的耦合。即使有新的應用的引入,也不需要破壞當前系統的整體結構。
Consumer Groups
“Group”, Kafka 中的概念。Spring Cloud Stream 的這個分組概念的意思基本和 Kafka 一致。
微服務中動態的縮放同一個應用的數量以此來達到更高的處理能力是非常必須的。對於這種情況,同一個事件防止被重複消費,只要把這些應用放置於同一個 “group” 中,就能夠保證訊息只會被其中一個應用消費一次。
Message
Message,就是所說的訊息體,用來承載傳輸的資訊用的。Message分為兩部分,header和payload。header是頭部資訊,用來儲存傳輸的一些特性屬性引數。payload是用來裝載資料的,他可以攜帶的任何Object物件 不同的物件在binder中傳輸 可以指定不同的mini型別
可以透過application.yml中設定 輸入input和輸出output的mini型別
spring.cloud.stream.bindings..content-type
MessageChannel
訊息管道,生產者生產一個訊息到channel,消費者從channel消費一個訊息,所以channel可以對訊息元件解耦,並且提供一個方便的攔截功能和監控功能。
預設的通道
輸入(SubscribableChannel)和輸出通道(MessageChannel)參考 Processor介面
springcloudstream提供通道的定義 比如自定義透過可以使用介面
public interface OrderChannel { String INPUT = "input_order"; String OUTPUT="ouput_order"; /** * input註解制定通道的名稱 將來在yml中配置該通道的實際繫結的topic或者訂閱組 * @return */ @Input(INPUT) SubscribableChannel orderInput(); /** * output註解指定輸出通道的名稱 * @return */ @Output(OUTPUT) MessageChannel orderOutput();}
以下 程式碼參考 Source Sink Processor介面 將來在yml關於該通道的配置既可以
spring: cloud: stream: bindings: 通道名稱: destination: mydest
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2672623/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java springcloud b2b2c shop 多使用者商城系統原始碼-介紹StreamJavaSpringGCCloud原始碼
- java B2B2C Springcloud仿淘寶電子商城系統-Spring Cloud介紹JavaSpringGCCloud
- (一)java B2B2C Springcloud電子商城系統 - Spring Cloud簡介JavaSpringGCCloud
- JAVA 多使用者商城系統b2b2c-Spring Cloud元件JavaSpringCloud元件
- JAVA 多使用者商城系統b2b2c-spring cloud 概述JavaSpringCloud
- java B2B2C Springcloud多租戶電子商城系統-Spring Cloud SleuthJavaSpringGCCloud
- JAVA電商 B2B2C商城系統 多使用者商城系統 直播帶貨Java
- java B2B2C 原始碼 多級分銷Springcloud多租戶電子商城系統-KAFKA介紹Java原始碼SpringGCCloudKafka
- java B2B2C Springcloud多租戶電子商城系統-spring-cloud-eurekaJavaSpringGCCloud
- JAVA商城 B2B2C商城系統 小程式 電子商務 springcloud商城JavaSpringGCCloud
- java B2B2C Springcloud電子商城系統-Spring Cloud學習JavaSpringGCCloud
- java B2B2C 原始碼多租戶電子商城系統-Spring Cloud整合Netflix Archaius介紹Java原始碼SpringCloudAI
- Java springcloud B2B2C o2o多使用者商城-訊息驅動 Spring Cloud StreamJavaSpringGCCloud
- java B2B2C Springboot多租戶電子商城系統-Consul 介紹JavaSpring Boot
- java B2B2C Springcloud多租戶電子商城系統-整合專案簡介JavaSpringGCCloud
- java B2B2C Springboot多租戶電子商城系統-Spring Cloud Stream(訊息驅動)JavaSpring BootCloud
- java版 電子商務Springcloud分散式微服務多使用者商城系統-Springboot專案打包JavaGCCloud分散式微服務Spring Boot
- (十七)Java springcloud B2B2C o2o多使用者商城 springcloud架構-訊息驅動 Spring Cloud StreamJavaSpringGCCloud架構
- java B2B2C Springcloud多租戶電子商城系統- Stream 構建訊息驅動微服務JavaSpringGCCloud微服務
- java B2B2C springmvc mybatis電子商城系統-Shiro介紹JavaSpringMVCMyBatis
- java B2B2C 多租戶電子商城系統-Spring Cloud ZipkinJavaSpringCloud
- java B2B2C 原始碼多租戶電子商城系統-Kafka基本使用介紹Java原始碼Kafka
- java B2B2C Springcloud仿淘寶電子商城系統-Spring Cloud的核心特性JavaSpringGCCloud
- java spring cloud 版b2b2c社交電商-熔斷器HystrixJavaSpringCloud
- JAVA 多使用者商城系統b2b2c-Spring Cloud常見問題與總結(一)JavaSpringCloud
- java B2B2C 多租戶電子商城系統-spring-cloud-configJavaSpringCloud
- JAVA springcloud b2b2c多使用者商城系統原始碼(五)springboot整合 beatlsqlJavaGCCloud原始碼Spring BootTLSSQL
- java B2B2C Springcloud多租戶電子商城系統- Gateway 之Predict篇JavaSpringGCCloudGateway
- java B2B2C springmvc mybatis多租戶電子商城系統-Spring Cloud RibbonJavaSpringMVCMyBatisCloud
- java B2B2C springmvc mybatis多租戶電子商城系統-Spring Cloud FeignJavaSpringMVCMyBatisCloud
- JAVA springcloud ssm b2b2c多使用者商城系統原始碼 (四)SpringBoot 整合JPAJavaGCCloudSSM原始碼Spring Boot
- JAVA springcloud ssm b2b2c多使用者商城系統-docker-hystrix-dashboard-turbine(九)JavaSpringGCCloudSSMDocker
- java B2B2C Springcloud電子商城系統-Spring Cloud常見問題與總結(四)JavaSpringGCCloud
- java B2B2C Springcloud電子商城系統-Feign負載均衡JavaSpringGCCloud負載
- java B2B2C Springcloud電子商城系統- Gateway初體驗JavaSpringGCCloudGateway
- B2B2C多使用者國際版商城系統
- java B2B2C Springboot多租戶電子商城系統-spring-cloud-eureka-consumerJavaSpring BootCloud
- JAVA商城 B2B2C Spring Cloud、小程式 多使用者商城系統 直播帶貨 新零售商城JavaSpringCloud