亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2025年01月15日 10:11:41   作者:恩爸編程  
RabbitMQ 作為一款廣受歡迎的開(kāi)源消息隊(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 作為一款廣受歡迎的開(kāi)源消息隊(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 專(zhuān)門(mén)用于集成 RabbitMQ 的起步依賴,它把 RabbitMQ 客戶端以及 Spring 對(duì) AMQP 規(guī)范的支持庫(kù)都封裝進(jìn)來(lái),讓后續(xù)開(kāi)發(fā)無(wú)需操心復(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ù)器的地址與端口,開(kāi)發(fā)環(huán)境中通常默認(rèn)是 localhost:5672usernamepassword 用于客戶端連接 RabbitMQ 服務(wù)器時(shí)的身份驗(yàn)證,保障消息隊(duì)列的訪問(wèn)安全。

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

配置類(lèi)創(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)注此為配置類(lèi),用于定義 RabbitMQ 的基礎(chǔ)組件。testQueue 方法創(chuàng)建了一個(gè)持久化隊(duì)列,持久化隊(duì)列保證在 RabbitMQ 服務(wù)器重啟后,隊(duì)列依然存在。testExchange 方法定義了一個(gè)直連型交換機(jī),交換機(jī)是消息流轉(zhuǎn)的樞紐。binding 方法將隊(duì)列和交換機(jī)通過(guò)路由鍵 "testRoutingKey" 綁定起來(lái),這樣交換機(jī)就能把匹配路由鍵的消息精準(zhǔn)投送到對(duì)應(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ù)類(lèi)。RabbitTemplate 是 Spring 提供的與 RabbitMQ 交互的核心模板類(lèi),sendMessage 方法利用它,把消息通過(guò)指定的交換機(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 將類(lèi)標(biāo)識(shí)為 Spring 組件。@RabbitListener 注解指定監(jiān)聽(tīng)的隊(duì)列是 testQueue,當(dāng)隊(duì)列中有新消息到達(dá)時(shí),receiveMessage 方法會(huì)被自動(dòng)觸發(fā),這里只是簡(jiǎn)單地將接收到的消息打印出來(lái)。

測(cè)試集成

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

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)目,訪問(wèn) /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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 較詳細(xì)的JNI簡(jiǎn)介

    較詳細(xì)的JNI簡(jiǎn)介

    JNI是本地語(yǔ)言編程接口。它允許運(yùn)行在JVM中的Java代碼和用C、C++或匯編寫(xiě)的本地代碼相互操作。下面通過(guò)本文給大家分享JNI簡(jiǎn)介,感興趣的朋友一起看看吧
    2017-10-10
  • java中@NotBlank限制屬性不能為空

    java中@NotBlank限制屬性不能為空

    在實(shí)體類(lèi)的對(duì)應(yīng)屬性上添 @NotBlank注解,可以實(shí)現(xiàn)對(duì)空置的限制,本文就來(lái)介紹一下java中@NotBlank限制屬性不能為空,感興趣的可以了解一下
    2024-01-01
  • Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢

    Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢

    本文主要介紹了Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 幾種常見(jiàn)的Java運(yùn)行時(shí)異常小結(jié)

    幾種常見(jiàn)的Java運(yùn)行時(shí)異常小結(jié)

    在Java編程語(yǔ)言中異常處理是一項(xiàng)關(guān)鍵的機(jī)制,它幫助開(kāi)發(fā)者識(shí)別和修復(fù)程序運(yùn)行時(shí)可能出現(xiàn)的問(wèn)題,下面這篇文章主要給大家介紹了幾種常見(jiàn)的Java運(yùn)行時(shí)異常的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Java 實(shí)戰(zhàn)范例之線上新聞平臺(tái)系統(tǒng)的實(shí)現(xiàn)

    Java 實(shí)戰(zhàn)范例之線上新聞平臺(tái)系統(tǒng)的實(shí)現(xiàn)

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+jsp+jdbc+mysql實(shí)現(xiàn)一個(gè)線上新聞平臺(tái)系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java常見(jiàn)問(wèn)題之javac Hello.java找不到文件的解決方法

    Java常見(jiàn)問(wèn)題之javac Hello.java找不到文件的解決方法

    剛開(kāi)始編寫(xiě)java代碼時(shí),肯定會(huì)遇到各種各樣的bug,當(dāng)然對(duì)于初學(xué)者這也是能理解的,下面這篇文章主要給大家介紹了關(guān)于Java常見(jiàn)問(wèn)題之javac Hello.java找不到文件解決的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-01-01
  • java正則表達(dá)式應(yīng)用的實(shí)例代碼

    java正則表達(dá)式應(yīng)用的實(shí)例代碼

    java正則的實(shí)例應(yīng)用分析,大家從下面的代碼中,就能知道java正則的應(yīng)用與寫(xiě)法
    2008-10-10
  • Spring Boot中RedisTemplate的使用示例詳解

    Spring Boot中RedisTemplate的使用示例詳解

    RedisTemplate.opsForHash()是RedisTemplate類(lèi)提供的用于操作Hash類(lèi)型的方法,它可以用于對(duì)Redis中的Hash數(shù)據(jù)結(jié)構(gòu)進(jìn)行各種操作,如設(shè)置字段值、獲取字段值、刪除字段值等,本文介紹Spring Boot中RedisTemplate的使用,感興趣的朋友一起看看吧
    2023-10-10
  • Eclipse安裝Aptana插件(注意對(duì)應(yīng)版本問(wèn)題)

    Eclipse安裝Aptana插件(注意對(duì)應(yīng)版本問(wèn)題)

    這篇文章主要為大家詳細(xì)介紹了Eclipse安裝Aptana插件的相關(guān)資料,特別注意對(duì)應(yīng)版本問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Springboot報(bào)錯(cuò)java.lang.NullPointerException: null問(wèn)題

    Springboot報(bào)錯(cuò)java.lang.NullPointerException: null問(wèn)題

    這篇文章主要介紹了Springboot報(bào)錯(cuò)java.lang.NullPointerException: null問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論