最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合RabbitMQ示例詳解

 更新時間:2023年07月12日 08:35:54   作者:卑微小鐘  
這篇文章主要介紹了SpringBoot整合RabbitMQ示例詳解,RabbitMQ是一個實現(xiàn)了AMQP高級消息隊列協(xié)議的消息隊列服務(wù),用Erlang語言。是面向消息的中間件,需要的朋友可以參考下

SpringBoot整合RabbitMQ

1.生產(chǎn)者SpringBootProducer

1.1 創(chuàng)建工程并導(dǎo)入依賴

我們使用的springboot版本為2.5.6,其他都是根據(jù)spring-boot-starter-parent自動選擇版本

引入以下工程即可

  • spring-boot-starter-test 用于測試
  • junit 用于單元測試
  • spring-boot-starter-amqp SpringBoot和RabbitMQ的整合方案
<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/>
    </parent>
    <artifactId>springboot-producer</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <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-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

1.2 創(chuàng)建配置文件并配置

SpringBoot配置文件名稱為application.yml

需要配置的內(nèi)容如下:

# 配置RabbitMQ的基本信息
spring:
  rabbitmq:
    # 地址
    host: 192.168.52.128
    # 端口
    port: 5672
    # 用戶名
    username: admin
    # 密碼
    password: admin
    # 虛擬機
    virtual-host: /test

1.3 創(chuàng)建項目啟動類

@SpringBootApplication
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

1.4 創(chuàng)建RabbitMQ配置類

@Configuration
public class RabbitMQConfig {
	// 配置代碼都寫在這里
}

(1)設(shè)置默認(rèn)的交換機的名稱和隊列名稱

/**
 * 默認(rèn)測試的交換機機名稱
 * springboot_topic_exchange
 */
public static final String EXCHANGE_NAME = "springboot_topic_exchange";
/**
 * 默認(rèn)的隊列名稱
 * springboot_root_queue
 */
public static final String QUEUE_NAME = "springboot_root_queue";

(2)創(chuàng)建通配符類型的交換機

/**
 * 創(chuàng)建交換機
 *
 * @return 交換機
 */
@Bean("bootExchange")
public Exchange bootExchange() {
    // 創(chuàng)建一個通配符的交換機
    return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
}

這里需要在bean上加上名稱(雖然如果沒有時會使用方法名,但是嚴(yán)謹(jǐn)),便于之后交換機和隊列綁定操作。

除了通配符交換機外,還支持廣播型交換機、定向型交換機。

  • 廣播型交換機
/**
 * 創(chuàng)建交換機
 *
 * @return 交換機
 */
@Bean("bootExchange")
public Exchange bootExchange() {
    // 創(chuàng)建一個通配符的交換機
    return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
}
  • 定向型交換機
@Bean("directExchange")
public Exchange directExchange() {
    return ExchangeBuilder.directExchange("direct_exchange").durable(true).build();
}

(3)創(chuàng)建一個隊列

/**
 * 創(chuàng)建隊列
 *
 * @return 隊列
 */
@Bean("bootQueue")
public Queue bootQueue() {
    return QueueBuilder.durable(QUEUE_NAME).build();
}

(4)綁定交換機和隊列

/**
 * 綁定隊列和交換機
 * 主要:隊列、交換機、routing key
 *
 * @return 綁定關(guān)系
 */
@Bean
public Binding bindingQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange) {
    return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
}

(5)完整配置類

@Configuration
public class RabbitMQConfig {
    /**
     * 默認(rèn)測試的交換機機名稱
     * springboot_topic_exchange
     */
    public static final String EXCHANGE_NAME = "springboot_topic_exchange";
    /**
     * 默認(rèn)的隊列名稱
     * springboot_root_queue
     */
    public static final String QUEUE_NAME = "springboot_root_queue";
    /**
     * 創(chuàng)建交換機
     *
     * @return 交換機
     */
    @Bean("bootExchange")
    public Exchange bootExchange() {
        // 創(chuàng)建一個通配符的交換機
        return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
    }
    /**
     * 創(chuàng)建隊列
     *
     * @return 隊列
     */
    @Bean("bootQueue")
    public Queue bootQueue() {
        return QueueBuilder.durable(QUEUE_NAME).build();
    }
    /**
     * 綁定隊列和交換機
     * 主要:隊列、交換機、routing key
     *
     * @return 綁定關(guān)系
     */
    @Bean
    public Binding bindingQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
    }
}

1.5 測試發(fā)送消息

@SpringBootTest
@RunWith(SpringRunner.class)
public class ProducerTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test
    public void testSend() {
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, "boot.name", "Spring Boot RabbitMQ");
    }
}

2.消費者SpringBootConsumer

2.1 創(chuàng)建工程并導(dǎo)入依賴

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;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 https://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
    &lt;parent&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
        &lt;version&gt;2.5.6&lt;/version&gt;
        &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
    &lt;/parent&gt;
    &lt;groupId&gt;com.example&lt;/groupId&gt;
    &lt;artifactId&gt;springboot-consumer&lt;/artifactId&gt;
    &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
    &lt;name&gt;springboot-consumer&lt;/name&gt;
    &lt;description&gt;springboot-consumer&lt;/description&gt;
    &lt;properties&gt;
        &lt;java.version&gt;1.8&lt;/java.version&gt;
    &lt;/properties&gt;
    &lt;dependencies&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-amqp&lt;/artifactId&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
            &lt;scope&gt;test&lt;/scope&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.amqp&lt;/groupId&gt;
            &lt;artifactId&gt;spring-rabbit-test&lt;/artifactId&gt;
            &lt;scope&gt;test&lt;/scope&gt;
        &lt;/dependency&gt;
    &lt;/dependencies&gt;
    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;
&lt;/project&gt;

PS:以上依賴是由springboot工程創(chuàng)建完成,和之前手動創(chuàng)建沒有本質(zhì)差別

2.2 創(chuàng)建配置文件并配置

SpringBoot配置文件名稱為application.yml

需要配置的內(nèi)容如下:

# 配置RabbitMQ的基本信息
spring:
  rabbitmq:
    # 地址
    host: 192.168.52.128
    # 端口
    port: 5672
    # 用戶名
    username: admin
    # 密碼
    password: admin
    # 虛擬機
    virtual-host: /test

2.3 創(chuàng)建項目啟動類

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

2.3 創(chuàng)建監(jiān)聽器

@Component
public class RabbitMQListener {
    @RabbitListener(queues = "springboot_root_queue")
    public void listenerQueue(Message message) {
        System.out.println("RabbitMQListener:" + new String(message.getBody()));
    }
}

@RabbitListener表示當(dāng)前方法監(jiān)聽對應(yīng)的隊列,并且支持多隊列。

2.4 run

控制臺如下:

RabbitMQListener:Spring Boot RabbitMQ

到此這篇關(guān)于SpringBoot整合RabbitMQ示例詳解的文章就介紹到這了,更多相關(guān)SpringBoot整合RabbitMQ內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • eclipse啟動一個Springboot項目

    eclipse啟動一個Springboot項目

    本文主要介紹了eclipse啟動一個Springboot項目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • java poi判斷excel是xlsx還是xls類型

    java poi判斷excel是xlsx還是xls類型

    這篇文章主要為大家詳細(xì)介紹了如何利用java poi來判斷excel是xlsx還是xls類型,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-10-10
  • Java?Mybatis查詢數(shù)據(jù)庫舉例詳解

    Java?Mybatis查詢數(shù)據(jù)庫舉例詳解

    這篇文章主要給大家介紹了關(guān)于Java?Mybatis查詢數(shù)據(jù)庫的相關(guān)資料,在MyBatis中可以使用遞歸查詢實現(xiàn)對數(shù)據(jù)庫中樹形結(jié)構(gòu)數(shù)據(jù)的查詢,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • java跟蹤執(zhí)行的sql語句示例分享

    java跟蹤執(zhí)行的sql語句示例分享

    這篇文章主要介紹了java跟蹤執(zhí)行的sql語句示例分享,需要的朋友可以參考下
    2014-03-03
  • 關(guān)于servlet向mysql添加數(shù)據(jù)時中文亂碼問題的解決

    關(guān)于servlet向mysql添加數(shù)據(jù)時中文亂碼問題的解決

    最近在工作中遇到一個小問題,出現(xiàn)了中文亂碼的問題,無奈只能想辦法解決,下面這篇文章主要給大家介紹了關(guān)于servlet向mysql添加數(shù)據(jù)時中文亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Java?Thread.join()方法使用詳細(xì)解析

    Java?Thread.join()方法使用詳細(xì)解析

    Thread.join()是Java多線程編程中的關(guān)鍵方法,用于確保線程執(zhí)行順序和數(shù)據(jù)完整性,下面這篇文章主要介紹了Java?Thread.join()方法使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-01-01
  • Java ArrayList集合詳解(Java動態(tài)數(shù)組)

    Java ArrayList集合詳解(Java動態(tài)數(shù)組)

    這篇文章主要介紹了Java ArrayList集合詳解(Java動態(tài)數(shù)組),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java?-jar啟動服務(wù)并輸出日志常用命令小結(jié)

    java?-jar啟動服務(wù)并輸出日志常用命令小結(jié)

    這篇文章主要介紹了在Linux環(huán)境下運行JAR包的幾種方法,包括在命令結(jié)尾添加&使其在后臺運行,使用nohup使程序不掛斷運行,以及將日志輸出到指定文件或丟棄,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • springboot如何使用vue打包過的頁面資源

    springboot如何使用vue打包過的頁面資源

    這篇文章主要介紹了springboot如何使用vue打包過的頁面資源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • 探討Java語言中那些修飾符

    探討Java語言中那些修飾符

    在java中常見的修飾符有:abstract(抽象的)、static(靜態(tài)的)、public(公共的)、protected(受保護(hù)的)、private(私有的)、synchronized(同步的)、native(本地的)、transient(暫時的)、volatile(易失的)、final(不可改變的)。對java語言修飾符感興趣的朋友一起看看吧
    2016-11-11

最新評論

临高县| 绥化市| 犍为县| 铁岭县| 淮阳县| 永川市| 衡山县| 垫江县| 龙岩市| 灵丘县| 云和县| 烟台市| 广河县| 广安市| 新巴尔虎右旗| 平遥县| 双柏县| 威远县| 明光市| 彭州市| 马关县| 莎车县| 五台县| 宁化县| 班戈县| 苍山县| 陇南市| 朝阳县| 盐城市| 工布江达县| 岳西县| 漠河县| 磴口县| 石林| 吉林市| 泰宁县| 冀州市| 西藏| 贺州市| 汝州市| 娄烦县|