日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Stream幫你無感知切換消息中間件

來源: 責編: 時間:2024-01-24 09:02:56 255觀看
導讀哈嘍,大家好,我是了不起。在實際的企業開發中,消息中間件是至關重要的組件之一。如常見的RabbitMQ和Kafka,這些中間件的差異性導致我們實際項目開發給我們造成了一定的困擾,這時候 Spring Cloud Stream 給我們提供了一種解

哈嘍,大家好,我是了不起。NaS28資訊網——每日最新資訊28at.com

在實際的企業開發中,消息中間件是至關重要的組件之一。如常見的RabbitMQ和Kafka,這些中間件的差異性導致我們實際項目開發給我們造成了一定的困擾,這時候 Spring Cloud Stream 給我們提供了一種解耦合的方式。NaS28資訊網——每日最新資訊28at.com

簡介

Spring Cloud Stream 由一個中間件中立的核組成。NaS28資訊網——每日最新資訊28at.com

應用通過 Spring Cloud Stream 插入的Input(相當于消費者Consumer,它是從隊列中接收消息的)和Output(相當于生產者Producer,它是從隊列中發送消息的。)通道與外界交流。NaS28資訊網——每日最新資訊28at.com

通道通過指定中間件的Binder實現與外部代理連接。NaS28資訊網——每日最新資訊28at.com

業務開發者不再關注具體消息中間件,只需關注Binder對應用程序提供的抽象概念來使用消息中間件實現業務即可。NaS28資訊網——每日最新資訊28at.com

詳細介紹

核心概念

Spring Cloud Stream 為各大消息中間件產品提供了個性化的自動化配置實現,引用了發布-訂閱、消費組、分區的三個核心概念。NaS28資訊網——每日最新資訊28at.com

Spring Cloud Stream 提供了很多抽象和基礎組件來簡化消息驅動型微服務應用。包含以下內容:NaS28資訊網——每日最新資訊28at.com

  • Spring Cloud Stream的應用模型
  • 綁定抽象
  • 持久化發布/訂閱支持
  • 消費者組支持
  • 分片支持(Partitioning Support)
  • 可插拔API

應用模型

Spring Cloud Stream由一個中立的中間件內核組成。Spring Cloud Stream會注入輸入和輸出的channels,應用程序通過這些channels與外界通信,而channels則是通過一個明確的中間件Binder與外部brokers連接。NaS28資訊網——每日最新資訊28at.com

圖片圖片NaS28資訊網——每日最新資訊28at.com

各大消息中間件的綁定抽象

Spring Cloud Stream 提供對Kafka、Rabbit MQ、Redis、Gemfire的Binder實現。Spring Cloud Stream還包括了一個TestSupportBinder、TestSupportBinder預留一個未更改的channel以便于直接地、可靠地和channels通信。NaS28資訊網——每日最新資訊28at.com

分區支持

分區在有狀態處理中是一個很重要的概念,其重要性體現在性能和一致性上,要確保所有相關數據被一并處理,例如,在時間窗平均計算的例子中,給定傳感器測量結果應該都由同一應用實例進行計算。NaS28資訊網——每日最新資訊28at.com

Spring Cloud Stream支持在一個應用程序的多個實例之間數據分區,在分區的情況下,物理通信介質(例如,topic代理)被視為多分區結構。一個或多個生產者應用程序實例將數據發送給多個消費應用實例,并保證共同的特性的數據由相同的消費者實例處理。NaS28資訊網——每日最新資訊28at.com

Spring Cloud Stream 提供了一個通用的抽象,用于統一方式進行分區處理,因此分區可以用于自帶分區的代理(如Kafka)或者不帶分區的代理(如RabbieMQ)NaS28資訊網——每日最新資訊28at.com

編程模型

Spring Cloud Stream 提供了一些預定義的注解,用于綁定輸入和輸出channels,以及如何監聽channels。NaS28資訊網——每日最新資訊28at.com

通過@EnableBinding觸發綁定

將@EnableBinding注解添加到應用的配置類,就可以把一個spring應用轉換成Spring Cloud Stream應用,@EnableBinding注解本身就包含@Configuration注解,會觸發Spring Cloud Stream 基本配置。NaS28資訊網——每日最新資訊28at.com

@Import(...)@Configuration@EnableIntegrationpublic @interface EnableBinding {    ...    Class<?>[] value() default {};}

@Input 與 @Output

一個Spring Cloud Stream應用可以有任意數目的input和output通道,后者通過@Input和@Output注解在接口中定義。NaS28資訊網——每日最新資訊28at.com

@StreamListener

定義在方法中,被修飾的方法注冊為消息中間件上數據流的事件監聽器,注解中屬性值對應了監聽的消息通道名。NaS28資訊網——每日最新資訊28at.com

Source、Sink和Processor

Spring Cloud Stream提供了三個開箱即用的預定義接口。NaS28資訊網——每日最新資訊28at.com

  • Source用于有單個輸出(outbound)通道的應用。
public interface Source {  String OUTPUT = "output";  @Output(Source.OUTPUT)  MessageChannel output();}
  • Sink用于有單個輸入(inbound)通道的應用。
public interface Sink {  String INPUT = "input";  @Input(Sink.INPUT)  SubscribableChannel input();}
  • Processor用于單個應用同時包含輸入和輸出通道的情況。
public interface Processor extends Source, Sink {}

極簡實例

下面是一個非常簡單的 SpringBootApplication應用,通過依賴Spring Cloud Stream,從Input通道監聽消息然后返回應答到Output通道,只要添加配置文件就可以應用。NaS28資訊網——每日最新資訊28at.com

@SpringBootApplication@EnableBinding(Processor.class)public class ServiceApplication {    public static void main(String[] args) {        SpringApplication.run(MyLoggerServiceApplication.class, args);    }    @StreamListener(Processor.INPUT)    @SendTo(Processor.OUTPUT)    public LogMessage enrichLogMessage(LogMessage log) {        return new LogMessage(String.format("[1]: %s", log.getMessage()));    }}

下面解釋下這個示例中相關注解的應用:NaS28資訊網——每日最新資訊28at.com

  • @EnableBinding聲明了這個應用程序綁定了2個通道:INPUT和OUTPUT。這2個通道是在接口Processor中定義的(Spring Cloud Stream默認設置)。所有通道都是配置在一個具體的消息中間件或綁定器中。
  • @StreamListener(Processor.INPUT)表明這里在input中提取消息,并且處理。
  • @SendTo(Processor.OUTPUT)表明在output中返回消息。

其他特性

消息發送失敗的處理

消息發送失敗后悔發送到默認的一個“topic.errors"的channel中(topic是配置的destination)。要配置消息發送失敗的處理,需要將錯誤消息的channel打開。NaS28資訊網——每日最新資訊28at.com

消費者配置如下NaS28資訊網——每日最新資訊28at.com

spring:  application:    name: spring-cloud-stream-producer  cloud:    stream:      rocketmq:        binder:          name-server: 127.0.0.1:9876        bindings:          output:            producer:              group: test              sync: true      bindings:        output:          destination: stream-test-topic          content-type: text/plain # 內容格式。這里使用 JSON          producer:            errorChannelEnabled: true

在啟動類中配置錯誤消息的Channel信息NaS28資訊網——每日最新資訊28at.com

@Bean("stream-test-topic.errors")MessageChannel testoutPutErrorChannel(){    return new PublishSubscribeChannel();}

新建異常處理serviceNaS28資訊網——每日最新資訊28at.com

import org.springframework.integration.annotation.ServiceActivator;import org.springframework.messaging.Message;import org.springframework.stereotype.Service;@Servicepublic class ErrorProducerService {    @ServiceActivator(inputChannel = "stream-test-topic.errors")    public void receiveProducerError(Message message){        System.out.println("receive error msg :"+message);    }}

當發生異常時,由于測試類中已經將異常捕獲,處理發送異常主要是在這里進行。NaS28資訊網——每日最新資訊28at.com

總結

這篇文章根據 Spring Cloud Stream 的官方文檔,對Stream做了一個整體的介紹,包括設計目標,應用場景,業務模型以及對外開放的注解,希望大家能夠學以致用。NaS28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-66963-0.htmlStream幫你無感知切換消息中間件

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python中最常用的十個內置函數!

下一篇: Ubuntu大佬神操作!Rust版Linux調度器秀麻了,性能遠超C!

標簽:
  • 熱門焦點
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達到了中國第一,同時還表示小米電視的巨屏風暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內容創建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業發布的ESG報告。ESG是&ldquo;環境保
  • 支持aptX Lossless無損傳輸 iQOO TWS 1賽道版發布限時優惠價369元

    2023年7月4日,“無損音質,聲動人心”iQOO TWS 1正式發布,支持aptX Lossless無損傳輸,限時優惠價369元。iQOO TWS 1耳機率先支持端到端aptX Lossless無
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 與兆芯合作 聯想推出全新旗艦版筆記本電腦開天N7系列

    聯想與兆芯合作推出全新聯想旗艦版筆記本電腦開天 N7系列。這個系列采用兆芯KX-6640MA處理器平臺,KX-6640MA 處理器是采用了陸家嘴架構,16nm 工藝,4 核 4 線
Top 主站蜘蛛池模板: 靖宇县| 崇礼县| 徐汇区| 林口县| 仁寿县| 来安县| 常宁市| 宁夏| 分宜县| 甘肃省| 论坛| 漳浦县| 两当县| 通榆县| 邢台市| 自贡市| 上虞市| 辰溪县| 辽阳市| 涟水县| 长海县| 肃北| 石林| 龙陵县| 英山县| 上高县| 西畴县| 藁城市| 图们市| 清远市| 北辰区| 五寨县| 上虞市| 留坝县| 房山区| 昌乐县| 咸阳市| 蒙自县| 郸城县| 绥芬河市| 牟定县|