RabbitMQ與SpringCloud Stream整合

Spring Cloud,這個全家桶框架在整個中小型互聯(lián)網(wǎng)公司異常的火爆,那么相對應(yīng)著,Spring Cloud Stream 就漸漸的被大家所重視起來,這里我們主要介紹下Spring Cloud Stream 如何與RabbitMQ進行集成。

SpringCloudStream 簡介

SpringCloudStream 就是使用了基于消息系統(tǒng)的微服務(wù)處理架構(gòu)。對于消息系統(tǒng)而言一共分為兩類:基于應(yīng)用標準的 JMS、基于協(xié)議標準的 AMQP,在整個 SpringCloud 之中支持有 RabbitMQ、Kafka 組件的消息系統(tǒng)。利用 SpringCloudStream 可以實現(xiàn)更加方便的消息系統(tǒng)的整合處理,但是推薦還是基于 RabbitMQ 實現(xiàn)會更好一些。

為什么 SpringCloud 中要提供有一個類似于消息驅(qū)動的 SpringCloudStream 呢?

如果通過 Java 歷史上的分布式的開發(fā)架構(gòu)大家不難發(fā)現(xiàn),對于消息系統(tǒng),實際上最初的 SUN 公司是非常看中的,所以在 EJB 的時代里面專門提供有消息驅(qū)動 Bean(Message Driven Bean、MDB)利用消息驅(qū)動 Bean 可以進行消息的處理操作。利用消息驅(qū)動 bean 的模式可以簡化用戶的操作復(fù)雜度,直接傳遞一些各類的數(shù)據(jù)即可實現(xiàn)業(yè)務(wù)的處理操作。

于是在 SpringBoot 的之中為了方便開發(fā)者去整合消息組件,也提供有一系列的處理支持,但是如果按照這些方式來在 SpringCloud 之中進行消息處理,有些人會認為比較麻煩,所以在 SpringCloud 里面將消息整合的處理操作進行了進一步的抽象操作, 實現(xiàn)了更加簡化的消息處理。

總結(jié):SpringCloudStream 就是實現(xiàn)了 MDB 功能,同時可以更加簡化方便的整合消息組件。

說明:最底層是消息服務(wù),中間層是綁定層,綁定層和底層的消息服務(wù)進行綁定,頂層是消息生產(chǎn)者和消息消費者,頂層可以向綁定層生產(chǎn)消息和和獲取消息消費

  • Barista接口:Barista接口是定義來作為后面類的參數(shù),這一接口定義通道類型和通道名稱,通道名稱是作為配置用通道類型決定了app會使用這一通道進行發(fā)送消息還是從中接收消息

  • @Output: 輸出注解,用于定義發(fā)送消息接口

  • @Input: 輸入注解,用于定義消息的消費者接口

  • @StreamListener: 用于定義監(jiān)聽方法的注解

使用Spring Cloud Stream 非常簡單,只需要使用好3個注解即可,在實現(xiàn)高性能消息的生成和消費場景非常合適,但是使用Spring Cloud Stream框架有一個非常大的問題就是不能實現(xiàn)可靠性投遞,也就是沒法保證消息的100%可靠性,會存在少量消息丟失問題。

這個原因是因為SpringCloudStream框架為了和Kafka兼顧所有在實際工作中使用它的目的就是針對高性能的消息通信的!這點就是在當(dāng)前版本SpringCloudStream的定位。

詳細借鑒:https://www.cnblogs.com/leeSmall/p/8900518.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 前言 在微服務(wù)架構(gòu)的系統(tǒng)中,我們通常會使用輕量級的消息代理來構(gòu)建一個共用的消息主題讓系統(tǒng)中所有微服務(wù)實例都連接上來...
    Chandler_玨瑜閱讀 6,607評論 2 39
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,941評論 6 342
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,522評論 1 92
  • 一樣的夏末,一樣的陽光,還記得,那時青澀的臉龐,揚起的嘴角,說不盡的美好…… 那天晚上,咱們倆聊了很多,估計將我們...
    塞納河畔的云舟閱讀 398評論 0 0