欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springcloud整合stream,rabbitmq實現消息驅動功能

 更新時間:2022年02月25日 16:02:48   作者:灰太狼_cxh  
官方定義SpringCloud?Stream?是一個構建消息驅動微服務的框架。我們只需要搞清楚如何與Spring?Cloud?Stream?交互就可以方便使用消息驅動的方式。本文將通過Springcloud整合stream,rabbitmq實現消息驅動功能,需要的可以參考一下

springcloud整合stream,rabbitmq實現消息驅動功能

1.代碼實現:

創(chuàng)建項目stream

添加依賴

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cxh</groupId>
    <artifactId>stream</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>stream</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
        <spring-cloud-alibaba-dependencies.version>2021.1</spring-cloud-alibaba-dependencies.version>
        <spring-cloud-dependencies.version>2021.0.0</spring-cloud-dependencies.version>
    </properties>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
        </dependency>
    </dependencies>

監(jiān)聽類

 @EnableBinding(Sink.class)
public class SinkReceiver {
 
    private static Logger logger = LoggerFactory.getLogger(SinkReceiver.class);
 
    @StreamListener(Sink.INPUT)
    public void receive(String payload) {
        logger.info("Received: " + payload);
    }
 
}

2.實現效果:

啟動rabbitmq, 項目stream

打開瀏覽器http://localhost:15672/,使用賬號密碼guest登錄rabbitmq, 在隊列中發(fā)現消息:

測試send

查看控制臺消息:

com.cxh.stream.SinkReceiver              : Received: 測試send

補充

Spring Cloud Stream專門用于事件驅動的微服務系統(tǒng),使用消息中間件來收發(fā)信息。使用Spring Cloud Stream可專注于業(yè)務開發(fā),而不用花太多心思在應用與MQ之間的交互上。而且,在切換MQ后,也無須做太多的代碼改動。

所以Spring Cloud Stream和RabbitMQ還可以整合實現消息的收發(fā)

整合過程

添加依賴

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

不同的MQ使用不同的依賴,非常容易切換。

定義處理收發(fā)的方法

隊列無非就是收和發(fā),所以我們要先定義好,怎么樣發(fā),怎么樣收。

發(fā)送消息:

@Bean
public Supplier<String> pkslowSource() {
  return () -> {
    String message = "www.pkslow.com";
    log.info("Sending value: " + message);
    return message;
  };
}

只發(fā)送一個String,一般業(yè)務通常為Entity類。這里發(fā)送的內容也固定不變,實際業(yè)務可以通過查數據庫,讀文件等方式獲取數據源。

接收消息:

@Bean
public Consumer<String> pkslowSink() {
  return message -> {
    log.info("Received message " + message);
  };
}

直接打印消息即可,項目中的邏輯可按具體業(yè)務實現。

配置屬性

配置RabbitMQ:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: pkslow
    password: 123456

配置Spring Cloud Stream的相關項:

spring:
  cloud:
    stream:
      function:
        definition: pkslowSource;pkslowSink
      bindings:
        pkslowSource-out-0:
         destination: pkslow-topic
        pkslowSink-in-0:
          destination: pkslow-topic
      poller:
        fixed-delay: 500

spring.cloud.stream.function.definition會定義處理方法,如本文的收發(fā)消息的方法;

bindings配置對應的function;destination指向MQ的主題;

這里配了一個poller,每隔500ms就會發(fā)送一次消息。

運行

先啟動個RabbitMQ:

docker run \
-e RABBITMQ_DEFAULT_USER=pkslow \
-e RABBITMQ_DEFAULT_PASS=123456 \
-p 5672:5672 -p 15672:15672 \
rabbitmq:3.8-management

運行程序后,會自己創(chuàng)建主題、發(fā)送信息、接收信息:

運行日志如下:

可以看到每一次發(fā)/收大概是間隔了500ms,當然不可能是精確的500ms。

以上就是Springcloud整合stream,rabbitmq實現消息驅動功能的詳細內容,更多關于Springcloud stream rabbitmq消息驅動的資料請關注腳本之家其它相關文章!

相關文章

  • spring如何集成cxf實現webservice接口功能詳解

    spring如何集成cxf實現webservice接口功能詳解

    這篇文章主要給大家介紹了關于spring如何集成cxf實現webservice接口功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家 的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-07-07
  • Java計算百分比的各種方法總結

    Java計算百分比的各種方法總結

    這篇文章主要給大家介紹了關于Java計算百分比的各種方法,要計算百分比并保留兩位小數,首先需要明確計算公式和java語言的數學計算方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 繼承JpaRepository后,找不到findOne()方法的解決

    繼承JpaRepository后,找不到findOne()方法的解決

    這篇文章主要介紹了繼承JpaRepository后,找不到findOne()方法的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java 利用binarySearch實現抽獎計算邏輯

    Java 利用binarySearch實現抽獎計算邏輯

    這篇文章主要介紹了Java 利用binarySearch實現抽獎計算邏輯,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • springboot自動裝配原理初識

    springboot自動裝配原理初識

    這篇文章主要介紹了springboot自動裝配原理的相關資料,幫助大家更好的理解和學習使用springboot,感興趣的朋友可以了解下
    2021-04-04
  • Spring Bean的初始化和銷毀實例詳解

    Spring Bean的初始化和銷毀實例詳解

    這篇文章主要介紹了Spring Bean的初始化和銷毀,結合實例形式詳細分析了Spring Bean的初始化和銷毀相關配置、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • 基于Spring Boot不同的環(huán)境使用不同的配置方法

    基于Spring Boot不同的環(huán)境使用不同的配置方法

    下面小編就為大家分享一篇基于Spring Boot不同的環(huán)境使用不同的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • mybatis查詢字段為null設置為0的操作

    mybatis查詢字段為null設置為0的操作

    這篇文章主要介紹了mybatis查詢字段為null設置為0的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 詳解JAVA 反射機制

    詳解JAVA 反射機制

    這篇文章主要介紹了JAVA 反射機制的相關知識,文中講解的非常細致,代碼幫助大家更好的理解學習,感興趣的朋友可以了解下
    2020-06-06
  • Java中的HashMap集合源碼詳細解讀

    Java中的HashMap集合源碼詳細解讀

    這篇文章主要介紹了Java中的HashMap集合源碼詳細解讀,hash表是一種數據結構,它擁有驚人的效率,它的時間復雜度低到接近O(1)這樣的常數級,需要的朋友可以參考下
    2023-11-11

最新評論