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

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)文章

  • Spring使用AspectJ注解和XML配置實現(xiàn)AOP

    Spring使用AspectJ注解和XML配置實現(xiàn)AOP

    這篇文章主要介紹了Spring使用AspectJ注解和XML配置實現(xiàn)AOP的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java實現(xiàn)手寫乞丐版線程池的示例代碼

    Java實現(xiàn)手寫乞丐版線程池的示例代碼

    在這篇文章當(dāng)中我們主要介紹實現(xiàn)一個非常簡易版的線程池,深入的去理解其中的原理,麻雀雖小,五臟俱全,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2022-10-10
  • Spring監(jiān)聽器及定時任務(wù)實現(xiàn)方法詳解

    Spring監(jiān)聽器及定時任務(wù)實現(xiàn)方法詳解

    這篇文章主要介紹了Spring監(jiān)聽器及定時任務(wù)實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 基于java SSM springboot實現(xiàn)景區(qū)行李寄存管理系統(tǒng)

    基于java SSM springboot實現(xiàn)景區(qū)行李寄存管理系統(tǒng)

    這篇文章主要介紹了基于java SSM springboot實現(xiàn)的景區(qū)行李寄存管理系統(tǒng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • java?poi?讀取單元格null或者空字符串方式

    java?poi?讀取單元格null或者空字符串方式

    這篇文章主要介紹了java?poi?讀取單元格null或者空字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot項目中遇到的BUG問題及解決方法

    SpringBoot項目中遇到的BUG問題及解決方法

    這篇文章主要介紹了SpringBoot項目中遇到的BUG問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Java設(shè)計模式之模板方法模式詳解

    Java設(shè)計模式之模板方法模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java設(shè)計模式之模板方法模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • java.net.http.HttpClient使用示例解析

    java.net.http.HttpClient使用示例解析

    這篇文章主要為大家介紹了java.net.http.HttpClient使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • IntelliJ IDEA 設(shè)置代碼提示或自動補全的快捷鍵功能

    IntelliJ IDEA 設(shè)置代碼提示或自動補全的快捷鍵功能

    這篇文章主要介紹了IntelliJ IDEA 設(shè)置代碼提示或自動補全的快捷鍵功能,需要的朋友可以參考下
    2018-03-03
  • 詳解Java中NullPointerException的處理方法

    詳解Java中NullPointerException的處理方法

    這篇文章將帶大家來單獨看一個很常見的異常--空指針異常,這個可以說是每個Java程序員都必知的異常,所以我們不得不單獨學(xué)習(xí)一下,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-08-08

最新評論