1. 程式人生 > >SpringCloud個人筆記-04-Stream初體驗

SpringCloud個人筆記-04-Stream初體驗

cer ddr com hang build 分享 list 導致 star

  • sb_cloud_stream

  • Spring Cloud Stream 是一個構建消息驅動微服務的框架

    • 應用程序通過 inputs 或者 outputs 來與 Spring Cloud Stream 中binder 交互,通過我們配置來 binding ,而 Spring Cloud Stream 的 binder 負責與消息中間件交互。
    • 通過使用Spring Integration來連接消息代理中間件以實現消息事件驅動。Spring Cloud Stream 為一些供應商的消息中間件產品提供了個性化的自動化配置實現,引用了發布-訂閱消費組分區
      的三個核心概念。目前僅支持RabbitMQ、Kafka。
  • 為什麽需要SpringCloud Stream消息驅動呢?

比方說我們用到了RabbitMQ和Kafka,由於這兩個消息中間件的架構上的不同,像RabbitMQ有exchange,kafka有Topic,partitions分區,這些中間件的差異性導致我們實際項目開發給我們造成了一定的困擾,我們如果用了兩個消息隊列的其中一種,

後面的業務需求,我想往另外一種消息隊列進行遷移,這時候無疑就是一個災難性的,一大堆東西都要重新推倒重新做,因為它跟我們的系統耦合了,這時候springcloud Stream給我們提供了一種解耦合的方式。

技術分享圖片
    •   Spring Cloud Stream由一個中間件中立的核組成。應用通過Spring Cloud Stream插入的input(相當於消費者consumer,它是從隊列中接收消息的)和output(相當於生產者producer,它是從隊列中發送消息的。)通道與外界交流。

        通道通過指定中間件的Binder實現與外部代理連接。業務開發者不再關註具體消息中間件,只需關註Binder對應用程序提供的抽象概念來使用消息中間件實現業務即可

  
技術分享圖片
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.huarui</groupId> <artifactId>sb_cloud_stream</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sb_cloud_stream</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <!-- rabbit --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <!-- stream --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency> <!-- eureka client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
pom.xml 技術分享圖片
 1 spring:
 2   application:
 3     name: sb_cloud_config_client
 4 #  #RebbitMq
 5   rabbitmq:
 6     host: 39.108.85.204
 7     port: 5672
 8     username: guest
 9     password: guest
10 
11 
12 eureka:
13   client:
14     serviceUrl:
15       defaultZone: http://39.108.85.204:8761/eureka/
16   instance:
17     #註冊時使用ip而不是主機名
18     prefer-ip-address: true
19     #指定此實例的ip
20     #ip-address: ip
21 server:
22   port: 9004
application.yml

SpringCloud個人筆記-04-Stream初體驗