国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot整合RabbitMQ及其原理分析

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot整合RabbitMQ及其原理分析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

上一篇:RabbitMQ基礎(chǔ)知識(shí)

1、相關(guān)依賴

這里無需指定版本號(hào),讓其跟著SpringBoot版本走。本示例使用SpringBoot版本號(hào)為2.7.10。

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

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

2、生產(chǎn)者、消費(fèi)者

創(chuàng)建兩個(gè)SpringBoot應(yīng)用,模擬消息生產(chǎn)者與消費(fèi)者【publisher、consumer】。

2-1生產(chǎn)者

編寫配置文件,用戶名和密碼等自行修改 這里虛擬機(jī)的名稱是上一篇文章中新建的。

server.port=8082
#rabbitmq服務(wù)器ip
spring.rabbitmq.host=localhost
#rabbitmq的端口
spring.rabbitmq.port=5672
#用戶名
spring.rabbitmq.username=用戶名
#密碼
spring.rabbitmq.password=密碼
#配置虛擬機(jī)
spring.rabbitmq.virtual-host=demo

聲明交換機(jī)、隊(duì)列并綁定:

@Configuration
public class RabbitMqConfig {

    @Bean
    public RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(jackson2JsonMessageConverter());
        return rabbitTemplate;
    }

    @Bean
    public MessageConverter jackson2JsonMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }

    @Bean
    public DirectExchange getExchange(){
        return new DirectExchange("directExchange",false,false);
    }

    @Bean
    public Queue getQueue(){
        return new Queue("publisher.addUser",true,false,false);
    }

    @Bean
    public Binding getBinding(DirectExchange exchange,Queue queue){
        return BindingBuilder.bind(queue).to(exchange).with("publisher.addUser");
    }
}

新建User實(shí)體類

@Data
public class User {
    private Long id;
    private String name;
    private String desc;
}

在方法中使用RabbitTemplate來發(fā)送消息:

public interface PublisherService {

    /**
     * 添加用戶
     * @param user 用戶信息
     */
    void addUser(User user);

}
@RequiredArgsConstructor
@Service
public class PublisherServiceImpl implements PublisherService{

    private final RabbitTemplate rabbitTemplate;

    @Override
    public void addUser(User user) {
        rabbitTemplate.convertAndSend("directExchange","publisher.addUser",user);
    }
}

以上需要注意的就是交換機(jī)的名稱、隊(duì)列名routingKey。示例中使用的是直連交換機(jī),routingKey需要和隊(duì)列名保持一致。不懂的可以查看上一篇文章。

controller:

@RequiredArgsConstructor
@RestController
@RequestMapping("/user")
public class UserController {


    private final PublisherService publisherService;

    @PostMapping("/add")
    public void add(){
        User user = new User();
        user.setId(1000L);
        user.setName("黃忠");
        user.setDesc("老兵不死,只是逐漸凋零");
        publisherService.addUser(user);
    }

}

2-2消費(fèi)者

消費(fèi)者的配置和生產(chǎn)者一樣,不贅述了,直接看代碼:

@Service
@Slf4j
public class ConsumerService {


    @RabbitListener(queues ="publisher.addUser")
    public void addUser(String userStr){
        User user = JSONObject.parseObject(userStr,User.class);
        log.info(user.toString());
    }
}

@RabbitListener 注解是指定某方法作為消息消費(fèi)的方法,指定隊(duì)列名稱。@RabbitListener 如果標(biāo)注在類上,需配合 @RabbitHandler 注解一起使用,根據(jù)接受的參數(shù)類型進(jìn)入具體的方法中。

2-3測(cè)試

消費(fèi)端在啟動(dòng)時(shí)可能會(huì)報(bào)找不到交換機(jī)或隊(duì)列,只需要讓生產(chǎn)者發(fā)送一次消息,從控制臺(tái)就可以看到相關(guān)的交換機(jī)和隊(duì)列等信息了。

SpringBoot整合RabbitMQ及其原理分析,Springboot,RabbitMQ單排日記,rabbitmq,spring boot,原力計(jì)劃

可以看到消費(fèi)者成功消費(fèi)了消息:

SpringBoot整合RabbitMQ及其原理分析,Springboot,RabbitMQ單排日記,rabbitmq,spring boot,原力計(jì)劃

SpringBoot整合RabbitMQ及其原理分析,Springboot,RabbitMQ單排日記,rabbitmq,spring boot,原力計(jì)劃

3、消費(fèi)流程

通過上述操作,我們已經(jīng)會(huì)簡(jiǎn)單地使用RabbitMQ了,接下來了解一下它的整個(gè)流程。如此可以讓我們掌握的更牢固。

SpringBoot整合RabbitMQ及其原理分析,Springboot,RabbitMQ單排日記,rabbitmq,spring boot,原力計(jì)劃

生產(chǎn)者:

  • 生產(chǎn)者連接到Message Broker【也就是RabbitMQ服務(wù)】,建立一個(gè)連接( Connection)開啟一個(gè)信道(Channel)。
  • 生產(chǎn)者聲明一個(gè)交換機(jī),并設(shè)置相關(guān)屬性,比如交換機(jī)類型、是否持久化等。
  • 生產(chǎn)者聲明一個(gè)隊(duì)列并設(shè)置相關(guān)屬性。
  • 生產(chǎn)者通過路由鍵【Routing Key】將交換機(jī)和隊(duì)列綁定。
  • 生產(chǎn)者發(fā)送消息至RabbitMQ Broker,其中包含路由鍵、交換器等信息。
  • 相應(yīng)的交換機(jī)根據(jù)接收到的路由鍵查找相匹配的隊(duì)列。
  • 如果找到,則將從生產(chǎn)者發(fā)送過來的消息存入相應(yīng)的隊(duì)列中。
  • 如果沒有找到,則根據(jù)生產(chǎn)者配置的屬性選擇丟棄還是回退給生產(chǎn)者
  • 關(guān)閉信道。
  • 關(guān)閉連接。

消費(fèi)者:文章來源地址http://www.zghlxwxcb.cn/news/detail-571789.html

  • 消費(fèi)者連接到RabbitMQ Broker ,建立一個(gè)連接(Connection),開啟一個(gè)信道(Channel) 。
  • 消費(fèi)者向RabbitMQ Broker 請(qǐng)求消費(fèi)相應(yīng)隊(duì)列中的消息,可能會(huì)設(shè)置相應(yīng)的回調(diào)函數(shù),
  • 等待RabbitMQ Broker 回應(yīng)并投遞相應(yīng)隊(duì)列中的消息,消費(fèi)者接收消息。
  • 消費(fèi)者確認(rèn)(ack) 接收到的消息。
  • RabbitMQ 從隊(duì)列中刪除相應(yīng)己經(jīng)被確認(rèn)的消息。
  • 關(guān)閉信道。
  • 關(guān)閉連接。

到了這里,關(guān)于SpringBoot整合RabbitMQ及其原理分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot 整合RabbitMQ

    SpringBoot 整合RabbitMQ

    2007 年發(fā)布,是一個(gè)在 AMQP(高級(jí)消息隊(duì)列協(xié)議)基礎(chǔ)上完成的,可復(fù)用的企業(yè)消息系統(tǒng),是當(dāng)前最主流的消息中間件之一。 RabbitMQ是一個(gè)由erlang開發(fā)的AMQP(Advanced Message Queue 高級(jí)消息隊(duì)列協(xié)議 )的開源實(shí)現(xiàn),由于erlang 語(yǔ)言的高并發(fā)特性,性能較好,本質(zhì)是個(gè)隊(duì)列,F(xiàn)IFO 先入先出

    2024年02月15日
    瀏覽(24)
  • SpringBoot 整合 RabbitMQ

    SpringBoot 整合 RabbitMQ

    由于有的 Idea 不選擇插線無法創(chuàng)建 Spring Boot 項(xiàng)目,這里我們先隨便選一個(gè)插件,大家也可以根據(jù)需求選擇~~ 把版本改為 2.7.14 引入這兩個(gè)依賴: 配置 application.yml文件 Config 類 : RabbitMQConfig 測(cè)試類: RabbitMQConfigTests 結(jié)果 當(dāng)我們啟動(dòng) 測(cè)試類 之后就可以發(fā)現(xiàn)我們的 rabbitmq 界面里的

    2024年02月10日
    瀏覽(15)
  • SpringBoot整合RabbitMQ(基礎(chǔ))

    SpringBoot整合RabbitMQ(基礎(chǔ))

    一.環(huán)境準(zhǔn)備 1、在pom文件中引入對(duì)應(yīng)的依賴: 2、在application.yml配置文件中配置RabbitMQ: 二、整合 點(diǎn)對(duì)點(diǎn),簡(jiǎn)單模式 ①配置文件中聲明隊(duì)列 ②創(chuàng)建生產(chǎn)者 消息發(fā)送成功后,在web管理頁(yè)面查看: 可以看到對(duì)應(yīng)隊(duì)列中產(chǎn)生了消息 ③創(chuàng)建消費(fèi)者 啟動(dòng)項(xiàng)目,可以看到消息成功消費(fèi):

    2024年02月11日
    瀏覽(22)
  • 單個(gè)springboot整合rabbitmq

    單個(gè)springboot整合rabbitmq

    rabbitmq是一種消息中間件,是基于erlang語(yǔ)言開發(fā)的AMQP(高級(jí)消息隊(duì)列協(xié)議)的開源實(shí)現(xiàn)。 本質(zhì)是個(gè)隊(duì)列,F(xiàn)IFO先入先出。 1.1.1 rabbitmq特性: 開源,性能優(yōu)秀,穩(wěn)定保障 提供可靠的消息投遞模式,返回模式 于Spring AMQP完美整合,API豐富 集群模式豐富 高可用 1.1.2 rabbitmq主要結(jié)構(gòu) 生產(chǎn)

    2024年02月10日
    瀏覽(19)
  • RabbitMQ整合Springboot

    目錄 一、配置 二、使用 (1)創(chuàng)建普通交換機(jī) (2) 創(chuàng)建普通隊(duì)列 (3)綁定 交換機(jī)--隊(duì)列 (4)創(chuàng)建帶有死信交換機(jī)的隊(duì)列 (5)生產(chǎn)者 (6)消費(fèi)者 (7)Message對(duì)象 (8)延時(shí)隊(duì)列優(yōu)化(死信實(shí)現(xiàn)延時(shí),有缺陷) 三、Rabbitmq插件實(shí)現(xiàn)延遲隊(duì)列(重點(diǎn)) 四、發(fā)布確認(rèn) (1)確認(rèn)回調(diào)

    2024年02月15日
    瀏覽(15)
  • SpringBoot整合RabbitMQ

    SpringBoot整合RabbitMQ

    ??作者簡(jiǎn)介:練習(xí)時(shí)長(zhǎng)兩年半的Java up主 ??個(gè)人主頁(yè):程序員老茶 ?? ps:點(diǎn)贊??是免費(fèi)的,卻可以讓寫博客的作者開心好久好久?? ??系列專欄:Java全棧,計(jì)算機(jī)系列(火速更新中) ?? 格言:種一棵樹最好的時(shí)間是十年前,其次是現(xiàn)在 ??動(dòng)動(dòng)小手,點(diǎn)個(gè)關(guān)注不迷路,感

    2024年02月21日
    瀏覽(25)
  • SpringBoot整合實(shí)現(xiàn)RabbitMQ

    SpringBoot整合實(shí)現(xiàn)RabbitMQ

    本文大綱 一.RabbitMQ介紹 二.RabbitMQ的工作原理 2.1 RabbitMQ的基本結(jié)構(gòu) 2.2 組成部分說明 2.3 生產(chǎn)者發(fā)送消息流程 2.4 消費(fèi)者接收消息流程 三.SpringBoot 整合實(shí)現(xiàn)RabbitMQ 3.1創(chuàng)建mq-rabbitmq-producer(生產(chǎn)者)發(fā)送消息 3.1.1pom.xml中添加相關(guān)的依賴 3.1.2 配置application.yml 3.1.3 配置RabbitMQ常量類

    2024年02月17日
    瀏覽(50)
  • 【RabbitMQ】4 Spring/SpringBoot整合RabbitMQ

    spring-amqp 是對(duì)AMQP的一些概念的一些抽象, spring-rabbit 是對(duì)RabbitMQ操作的封裝實(shí)現(xiàn)。 主要有幾個(gè)核心類 RabbitAdmin 、 RabbitTemplate 、 SimpleMessageListenerContainer 等。 RabbitAdmin 類完成對(duì)Exchange,Queue,Binding的操作,在容器中管理了 RabbitAdmin 類的時(shí)候,可以對(duì)Exchange,Queue,Binding進(jìn)行自

    2024年01月22日
    瀏覽(21)
  • RabbitMQ與SpringBoot整合實(shí)踐

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 2020年是一個(gè)轉(zhuǎn)折點(diǎn),現(xiàn)代化的信息社會(huì)已經(jīng)開啟了數(shù)字化進(jìn)程,越來越多的人開始接受信息技術(shù)作為工作的一部分。相較于傳統(tǒng)的技術(shù)崗位,人工智能、大數(shù)據(jù)、云計(jì)算領(lǐng)域的軟件工程師更加需要具備實(shí)際項(xiàng)目應(yīng)用能力、高超的計(jì)算機(jī)和通信

    2024年02月09日
    瀏覽(20)
  • springboot整合rabbitmq死信隊(duì)列

    springboot整合rabbitmq死信隊(duì)列

    什么是死信 需要測(cè)試死信隊(duì)列,則需要先梳理整體的思路,如可以采取如下方式進(jìn)行配置: 從上面的邏輯圖中,可以發(fā)現(xiàn)大致的思路: .1. 消息隊(duì)列分為正常交換機(jī)、正常消息隊(duì)列;以及死信交換機(jī)和死信隊(duì)列。 2. 正常隊(duì)列針對(duì)死信信息,需要將數(shù)據(jù) 重新 發(fā)送至死信交換機(jī)

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包