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

RabbitMQ 在 Spring Boot 項(xiàng)目中的深度應(yīng)用與實(shí)戰(zhàn)解析

 更新時(shí)間:2025年01月15日 10:11:41   作者:恩爸編程  
RabbitMQ 作為一款廣受歡迎的開源消息隊(duì)列系統(tǒng),遵循 AMQP 協(xié)議,能夠在分布式系統(tǒng)里實(shí)現(xiàn)應(yīng)用程序之間的異步通信、解耦以及流量削峰等關(guān)鍵功能,這篇文章主要介紹了RabbitMQ 在 Spring Boot 項(xiàng)目中的深度應(yīng)用與實(shí)戰(zhàn)解析,需要的朋友可以參考下

RabbitMQ 在 Spring Boot 項(xiàng)目中的深度應(yīng)用與實(shí)戰(zhàn)解析

引言

RabbitMQ 作為一款廣受歡迎的開源消息隊(duì)列系統(tǒng),遵循 AMQP 協(xié)議,能夠在分布式系統(tǒng)里實(shí)現(xiàn)應(yīng)用程序之間的異步通信、解耦以及流量削峰等關(guān)鍵功能。在 Spring Boot 項(xiàng)目中集成 RabbitMQ,不僅能充分利用 RabbitMQ 的強(qiáng)大特性,還能借助 Spring Boot 的便捷配置,快速搭建起可靠的消息驅(qū)動(dòng)架構(gòu)。

環(huán)境搭建

引入依賴:在 pom.xml 文件中添加相關(guān)依賴。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
</dependencies>

spring-boot-starter-amqp 是 Spring Boot 專門用于集成 RabbitMQ 的起步依賴,它把 RabbitMQ 客戶端以及 Spring 對 AMQP 規(guī)范的支持庫都封裝進(jìn)來,讓后續(xù)開發(fā)無需操心復(fù)雜的底層依賴關(guān)系。

配置 RabbitMQ 連接:在 application.properties 中配置連接信息。

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

spring.rabbitmq.hostspring.rabbitmq.port 分別指定 RabbitMQ 服務(wù)器的地址與端口,開發(fā)環(huán)境中通常默認(rèn)是 localhost:5672。usernamepassword 用于客戶端連接 RabbitMQ 服務(wù)器時(shí)的身份驗(yàn)證,保障消息隊(duì)列的訪問安全。

定義隊(duì)列、交換機(jī)及綁定關(guān)系

配置類創(chuàng)建

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
    @Bean
    public Queue testQueue() {
        return QueueBuilder.durable("testQueue").build();
    }
    @Bean
    public DirectExchange testExchange() {
        return new DirectExchange("testExchange");
    }
    @Bean
    public Binding binding() {
        return BindingBuilder.bind(testQueue()).to(testExchange()).with("testRoutingKey");
    }
}

@Configuration 標(biāo)注此為配置類,用于定義 RabbitMQ 的基礎(chǔ)組件。testQueue 方法創(chuàng)建了一個(gè)持久化隊(duì)列,持久化隊(duì)列保證在 RabbitMQ 服務(wù)器重啟后,隊(duì)列依然存在。testExchange 方法定義了一個(gè)直連型交換機(jī),交換機(jī)是消息流轉(zhuǎn)的樞紐。binding 方法將隊(duì)列和交換機(jī)通過路由鍵 "testRoutingKey" 綁定起來,這樣交換機(jī)就能把匹配路由鍵的消息精準(zhǔn)投送到對應(yīng)的隊(duì)列。

消息生產(chǎn)者

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MessageProducer {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend("testExchange", "testRoutingKey", message);
    }
}

@Service 表明這是一個(gè)業(yè)務(wù)服務(wù)類。RabbitTemplate 是 Spring 提供的與 RabbitMQ 交互的核心模板類,sendMessage 方法利用它,把消息通過指定的交換機(jī) testExchange 和路由鍵 testRoutingKey 發(fā)送出去,最終消息會(huì)進(jìn)入到綁定的 testQueue 隊(duì)列。

消息消費(fèi)者

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MessageConsumer {
    @RabbitListener(queues = "testQueue")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

@Component 將類標(biāo)識為 Spring 組件。@RabbitListener 注解指定監(jiān)聽的隊(duì)列是 testQueue,當(dāng)隊(duì)列中有新消息到達(dá)時(shí),receiveMessage 方法會(huì)被自動(dòng)觸發(fā),這里只是簡單地將接收到的消息打印出來。

測試集成

可以在 Spring Boot 的控制器或者測試類里注入 MessageProducer 進(jìn)行測試:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
    @Autowired
    private MessageProducer messageProducer;
    @GetMapping("/send")
    public String sendMessage() {
        messageProducer.sendMessage("Hello, RabbitMQ!");
        return "Message sent";
    }
}

運(yùn)行 Spring Boot 項(xiàng)目,訪問 /send 端點(diǎn),消息會(huì)由生產(chǎn)者發(fā)送至 RabbitMQ,經(jīng)交換機(jī)、路由鍵的流轉(zhuǎn),最終被消費(fèi)者接收并處理,完美展現(xiàn) RabbitMQ 在 Spring Boot 項(xiàng)目中的完整使用流程。

到此這篇關(guān)于RabbitMQ 在 Spring Boot 項(xiàng)目中的深度應(yīng)用與實(shí)戰(zhàn)解析的文章就介紹到這了,更多相關(guān)RabbitMQ Spring Boot 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java SpringMVC攔截器與異常處理機(jī)制詳解分析

    Java SpringMVC攔截器與異常處理機(jī)制詳解分析

    SpringMVC是一種基于Java,實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式,請求驅(qū)動(dòng)類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦?;谡埱篁?qū)動(dòng)指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們?nèi)粘eb開發(fā)
    2021-10-10
  • 關(guān)于Selenium的UI自動(dòng)化測試屏幕截圖功能實(shí)例代碼

    關(guān)于Selenium的UI自動(dòng)化測試屏幕截圖功能實(shí)例代碼

    今天小編就為大家分享一篇關(guān)于Selenium的UI自動(dòng)化測試屏幕截圖功能實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Java Web學(xué)習(xí)之MySQL在項(xiàng)目中的使用方法

    Java Web學(xué)習(xí)之MySQL在項(xiàng)目中的使用方法

    mysql數(shù)據(jù)庫是我們在日常開發(fā)中經(jīng)常會(huì)用到的,下面這篇文章主要給大家介紹了關(guān)于Java Web學(xué)習(xí)之MySQL在項(xiàng)目中的使用方法,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Spring核心IoC和AOP的理解

    Spring核心IoC和AOP的理解

    本文主要介紹了Spring核心IoC和AOP的相關(guān)知識。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • Spring?Prototype?Bean的四種正確使用方式

    Spring?Prototype?Bean的四種正確使用方式

    文章主要講解了在Spring框架中正確使用PrototypeBean的方法,列舉了四種有效方式,并詳細(xì)分析了每種方式的優(yōu)缺點(diǎn)與適用場景,特別針對同一類型存在多個(gè)PrototypeBean的情況,給出了相應(yīng)的解決方案,需要的朋友可以參考下
    2026-04-04
  • IDEA中的clean,清除項(xiàng)目緩存圖文教程

    IDEA中的clean,清除項(xiàng)目緩存圖文教程

    這篇文章主要介紹了IDEA中的clean,清除項(xiàng)目緩存圖文教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring之ORM模塊代碼詳解

    Spring之ORM模塊代碼詳解

    這篇文章主要介紹了Spring之ORM模塊代碼詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Springboot中的Controller解析

    Springboot中的Controller解析

    這篇文章主要介紹了Springboot中的Controller解析,Controller是SpringBoot的基本組件,也是MVC結(jié)構(gòu)的組成部分,其作用是將用戶提交來的請求通過URL匹配,分發(fā)給不同的接收器,該接收器會(huì)對其進(jìn)行相應(yīng)處理,然后返回處理結(jié)果,需要的朋友可以參考下
    2023-09-09
  • Java中SimpleDateFormat的使用方法

    Java中SimpleDateFormat的使用方法

    這篇文章主要為大家詳細(xì)介紹了Java中SimpleDateFormat的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java中l(wèi)ong的一些常見用法

    java中l(wèi)ong的一些常見用法

    在Java中,long是一種基本數(shù)據(jù)類型,用于表示長整型數(shù)值,接下來通過本文給大家介紹java中l(wèi)ong的一些常見用法,感興趣的朋友一起看看吧
    2025-06-06

最新評論

普宁市| 乃东县| 长海县| 山西省| 荔浦县| 岳阳市| 葵青区| 吴江市| 黎城县| 根河市| 阿城市| 上饶市| 静安区| 垫江县| 乌拉特中旗| 南宫市| 宁陵县| 怀柔区| 泸定县| 普格县| 盖州市| 镇康县| 信宜市| 大厂| 通道| 五家渠市| 庆云县| 崇阳县| 梧州市| 平湖市| 河津市| 土默特右旗| 通辽市| 郁南县| 海晏县| 靖安县| 余干县| 同德县| 蒙自县| 铜梁县| 尼木县|