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

【RabbitMQ】RabbitMQ整合SpringBoot案例

這篇具有很好參考價值的文章主要介紹了【RabbitMQ】RabbitMQ整合SpringBoot案例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、前情提要【RabbitMQ】

【RabbitMQ】消息隊列-RabbitMQ篇章

RabbitMQ實現(xiàn)流程
【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot

2、RabbitMQ-SpringBoot案例 -fanout模式

2.1 實現(xiàn)架構(gòu)總覽

【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot

實現(xiàn)步驟:
1:創(chuàng)建生產(chǎn)者工程:sspringboot-rabbitmq-fanout-producer
2:創(chuàng)建消費者工程:springboot-rabbitmq-fanout-consumer
3:引入spring-boot-rabbitmq的依賴
4:進行消息的分發(fā)和測試
5:查看和觀察web控制臺的狀況

2.2 具體實現(xiàn)

2.2.1生產(chǎn)者

在這之前提前開好服務(wù)器,并且啟動mq的服務(wù),可參考上面的鏈接

  • 1、創(chuàng)建生產(chǎn)者springboot工程:sspringboot-rabbitmq-fanout-producer
    【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot
  • 2、導(dǎo)入啟動(web、mq)依賴
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 3、在application.yml進行配置
# 服務(wù)端口
server:
  port: 8080
# 配置rabbitmq服務(wù)
spring:
  rabbitmq:
    username: admin
    password: admin
    virtual-host: /
    # ip地址為開啟mq服務(wù)的服務(wù)器地址
    host: 47.104.141.27
    port: 5672
  • 4:定義訂單的生產(chǎn)者
package com.xuexiangban.rabbitmq.springbootrabbitmqfanoutproducer.service;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.UUID;
/**
 * @author: 學(xué)相伴-飛哥
 * @description: OrderService
 * @Date : 2021/3/4
 */
@Component
public class OrderService {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    // 1: 定義交換機
    private String exchangeName = "fanout_order_exchange";
    // 2: 路由key
    private String routeKey = "";
    public void makeOrder(Long userId, Long productId, int num) {
        // 1: 模擬用戶下單
        String orderNumer = UUID.randomUUID().toString();
        // 2: 根據(jù)商品id productId 去查詢商品的庫存
        // int numstore = productSerivce.getProductNum(productId);
        // 3:判斷庫存是否充足
        // if(num >  numstore ){ return  "商品庫存不足..."; }
        // 4: 下單邏輯
        // orderService.saveOrder(order);
        // 5: 下單成功要扣減庫存
        // 6: 下單完成以后
        System.out.println("用戶 " + userId + ",訂單編號是:" + orderNumer);
        // 發(fā)送訂單信息給RabbitMQ fanout
        rabbitTemplate.convertAndSend(exchangeName, routeKey, orderNumer);
    }
}
  • 4、配置類綁定交換機和隊列的關(guān)系
package com.xuexiangban.rabbitmq.springbootrabbitmqfanoutproducer.service;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @Author : JCccc
 * @CreateTime : 2019/9/3
 * @Description :
 **/
@Configuration
public class DirectRabbitConfig {
    //隊列 起名:TestDirectQueue
    @Bean
    public Queue emailQueue() {
        // durable:是否持久化,默認(rèn)是false,持久化隊列:會被存儲在磁盤上,當(dāng)消息代理重啟時仍然存在,暫存隊列:當(dāng)前連接有效
        // exclusive:默認(rèn)也是false,只能被當(dāng)前創(chuàng)建的連接使用,而且當(dāng)連接關(guān)閉后隊列即被刪除。此參考優(yōu)先級高于durable
        // autoDelete:是否自動刪除,當(dāng)沒有生產(chǎn)者或者消費者使用此隊列,該隊列會自動刪除。
        //   return new Queue("TestDirectQueue",true,true,false);
        //一般設(shè)置一下隊列的持久化就好,其余兩個就是默認(rèn)false
        return new Queue("email.fanout.queue", true);
    }
    @Bean
    public Queue smsQueue() {
        // durable:是否持久化,默認(rèn)是false,持久化隊列:會被存儲在磁盤上,當(dāng)消息代理重啟時仍然存在,暫存隊列:當(dāng)前連接有效
        // exclusive:默認(rèn)也是false,只能被當(dāng)前創(chuàng)建的連接使用,而且當(dāng)連接關(guān)閉后隊列即被刪除。此參考優(yōu)先級高于durable
        // autoDelete:是否自動刪除,當(dāng)沒有生產(chǎn)者或者消費者使用此隊列,該隊列會自動刪除。
        //   return new Queue("TestDirectQueue",true,true,false);
        //一般設(shè)置一下隊列的持久化就好,其余兩個就是默認(rèn)false
        return new Queue("sms.fanout.queue", true);
    }
    @Bean
    public Queue weixinQueue() {
        // durable:是否持久化,默認(rèn)是false,持久化隊列:會被存儲在磁盤上,當(dāng)消息代理重啟時仍然存在,暫存隊列:當(dāng)前連接有效
        // exclusive:默認(rèn)也是false,只能被當(dāng)前創(chuàng)建的連接使用,而且當(dāng)連接關(guān)閉后隊列即被刪除。此參考優(yōu)先級高于durable
        // autoDelete:是否自動刪除,當(dāng)沒有生產(chǎn)者或者消費者使用此隊列,該隊列會自動刪除。
        //   return new Queue("TestDirectQueue",true,true,false);
        //一般設(shè)置一下隊列的持久化就好,其余兩個就是默認(rèn)false
        return new Queue("weixin.fanout.queue", true);
    }
    //Direct交換機 起名:TestDirectExchange
    @Bean
    public DirectExchange fanoutOrderExchange() {
        //  return new DirectExchange("TestDirectExchange",true,true);
        return new DirectExchange("fanout_order_exchange", true, false);
    }
    //綁定  將隊列和交換機綁定, 并設(shè)置用于匹配鍵:TestDirectRouting
    @Bean
    public Binding bindingDirect1() {
        return BindingBuilder.bind(weixinQueue()).to(fanoutOrderExchange()).with("");
    }
    @Bean
    public Binding bindingDirect2() {
        return BindingBuilder.bind(smsQueue()).to(fanoutOrderExchange()).with("");
    }
    @Bean
    public Binding bindingDirect3() {
        return BindingBuilder.bind(emailQueue()).to(fanoutOrderExchange()).with("");
    }
}
  • 6.測試

向隊列發(fā)送10條消息

package com.xuexiangban.rabbitmq.springbootrabbitmqfanoutproducer;
import com.xuexiangban.rabbitmq.springbootrabbitmqfanoutproducer.service.OrderService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootRabbitmqFanoutProducerApplicationTests {
    @Autowired
    OrderService orderService;
    @Test
    public void contextLoads() throws Exception {
        for (int i = 0; i < 10; i++) {
            Thread.sleep(1000);
            Long userId = 100L + i;
            Long productId = 10001L + i;
            int num = 10;
            orderService.makeOrder(userId, productId, num);
        }
    }
}

啟動測試,此時進入mq的web頁面,查看交換機和隊列是否綁定上了,查看是否有隊列消息

【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot

向所有隊列中都加入10條消息—說明交換機和隊列綁定沒問題
【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot
【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot

2.2.1消費者

參照生產(chǎn)者的創(chuàng)建方法,選擇在平級目錄下創(chuàng)建:
springboot-order-rabbitmq-consumber

【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot
2. 修改配置文件

# 服務(wù)器
server:
# 端口要改成不沖突的
  port: 8081/
# rabbitmq配置
spring:
  rabbitmq:
    username: admin
    password: admin
    virtual-host: /
    host: 192.168.157.128    #127.0.0.1
    port: 5672

  1. 創(chuàng)建FanoutEmailConsumer、FanoutNoteConsumer、FanoutSMSConsumer消費者接收

【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot
【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot

4.運行測試
【RabbitMQ】RabbitMQ整合SpringBoot案例,RabbitMq,java-rabbitmq,rabbitmq,spring boot文章來源地址http://www.zghlxwxcb.cn/news/detail-657216.html

到了這里,關(guān)于【RabbitMQ】RabbitMQ整合SpringBoot案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【RabbitMQ】4 Spring/SpringBoot整合RabbitMQ

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

    2024年01月22日
    瀏覽(21)
  • SpringBoot項目整合RabbitMQ

    消息隊列(Message Queue)是分布式系統(tǒng)中常用的組件,它允許不同的應(yīng)用程序之間通過發(fā)送和接收消息進行通信。Spring Boot提供了簡單且強大的方式來整合消息隊列,其中包括RabbitMQ、ActiveMQ、Kafka等多種消息隊列實現(xiàn)。 本文將以RabbitMQ為例,詳細(xì)介紹如何使用Spring Boot來整合消

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

    SpringBoot 整合RabbitMQ

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

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

    SpringBoot 整合 RabbitMQ

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

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

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

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

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

    單個springboot整合rabbitmq

    rabbitmq是一種消息中間件,是基于erlang語言開發(fā)的AMQP(高級消息隊列協(xié)議)的開源實現(xiàn)。 本質(zhì)是個隊列,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)建普通交換機 (2) 創(chuàng)建普通隊列 (3)綁定 交換機--隊列 (4)創(chuàng)建帶有死信交換機的隊列 (5)生產(chǎn)者 (6)消費者 (7)Message對象 (8)延時隊列優(yōu)化(死信實現(xiàn)延時,有缺陷) 三、Rabbitmq插件實現(xiàn)延遲隊列(重點) 四、發(fā)布確認(rèn) (1)確認(rèn)回調(diào)

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

    SpringBoot整合RabbitMQ

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

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

    SpringBoot整合實現(xiàn)RabbitMQ

    本文大綱 一.RabbitMQ介紹 二.RabbitMQ的工作原理 2.1 RabbitMQ的基本結(jié)構(gòu) 2.2 組成部分說明 2.3 生產(chǎn)者發(fā)送消息流程 2.4 消費者接收消息流程 三.SpringBoot 整合實現(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:延遲隊列、rabbitmq 插件方式實現(xiàn)延遲隊列、整合SpringBoot

    消息隊列-RabbitMQ:延遲隊列、rabbitmq 插件方式實現(xiàn)延遲隊列、整合SpringBoot

    1、延遲隊列概念 延時隊列內(nèi)部是有序的 , 最重要的特性 就體現(xiàn)在它的 延時屬性 上,延時隊列中的元素是希望在指定時間到了以后或之前取出和處理,簡單來說, 延時隊列就是用來存放需要在指定時間被處理的元素的隊列。 延遲隊列使用場景: 訂單在十分鐘之內(nèi)未支付則

    2024年02月22日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包