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

SpringBoot整合RabbitMQ之發(fā)布訂閱模式

 更新時間:2025年06月12日 09:13:47   作者:新綠MEHO  
本文主要介紹了SpringBoot整合RabbitMQ之發(fā)布訂閱模式,涵蓋依賴配置、隊列與交換機(jī)聲明綁定、生產(chǎn)者與雙消費(fèi)者代碼實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

發(fā)布訂閱模式

引入依賴

<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>

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

添加配置

spring:
  application:
    name: rabbitmq-springboot
  rabbitmq:
    addresses: amqp://study:study@47.98.109.138:5672/aaa

常量類

public class Constants {

    //發(fā)布訂閱模式
    public static final String FANOUT_QUEUE1 = "fanout.queue1";
    public static final String FANOUT_QUEUE2 = "fanout.queue2";
    public static final String FANOUT_EXCHANGE = "fanout.exchange";
}

聲明隊列和交換機(jī)并綁定二者關(guān)系

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import rabbitmq.constant.Constants;

@Configuration
public class RabbitMQConfig {

    @Bean("fanoutQueue1")
    public Queue fanoutQueue1(){
        return QueueBuilder.durable(Constants.FANOUT_QUEUE1).build();
    }

    @Bean("fanoutQueue2")
    public Queue fanoutQueue2(){
        return QueueBuilder.durable(Constants.FANOUT_QUEUE2).build();
    }
    @Bean("fanoutExchange")
    public FanoutExchange fanoutExchange(){
        return ExchangeBuilder.fanoutExchange(Constants.FANOUT_EXCHANGE).durable(true).build();
    }

    @Bean("fanoutQueueBinding1")
    public Binding fanoutQueueBinding1(@Qualifier("fanoutExchange") FanoutExchange fanoutExchange, @Qualifier("fanoutQueue1") Queue queue){
        return BindingBuilder.bind(queue).to(fanoutExchange);
    }
    @Bean("fanoutQueueBinding2")
    public Binding fanoutQueueBinding2(@Qualifier("fanoutExchange") FanoutExchange fanoutExchange, @Qualifier("fanoutQueue2") Queue queue){
        return BindingBuilder.bind(queue).to(fanoutExchange);
    }
}

編寫生產(chǎn)者代碼

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import rabbitmq.constant.Constants;

@RequestMapping("/producer")
@RestController
public class ProducerController {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @RequestMapping("/fanout")
    public String fanout(){
        rabbitTemplate.convertAndSend(Constants.FANOUT_EXCHANGE,"", "hello spring amqp:fanout...");
        return "發(fā)送成功";
    }
}

編寫消費(fèi)者代碼(含兩個隊列)

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import rabbitmq.constant.Constants;

@Component
public class FanoutListener {

    @RabbitListener(queues = Constants.FANOUT_QUEUE1)
    public void queueListener1(String message){
        System.out.println("隊列["+Constants.FANOUT_QUEUE1+"] 接收到消息:" +message);
    }

    @RabbitListener(queues = Constants.FANOUT_QUEUE2)
    public void queueListener2(String message){
        System.out.println("隊列["+Constants.FANOUT_QUEUE2+"] 接收到消息:" +message);
    }
}

生產(chǎn)消息

消費(fèi)消息

兩個隊列都收到并消費(fèi)了消息,且結(jié)果符合預(yù)期。 

到此這篇關(guān)于SpringBoot整合RabbitMQ之發(fā)布訂閱模式的文章就介紹到這了,更多相關(guān)SpringBoot RabbitMQ發(fā)布訂閱模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深度優(yōu)先與廣度優(yōu)先Java實現(xiàn)代碼示例

    深度優(yōu)先與廣度優(yōu)先Java實現(xiàn)代碼示例

    這篇文章主要介紹了深度優(yōu)先與廣度優(yōu)先Java實現(xiàn)代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • java 格式化輸出數(shù)字的方法

    java 格式化輸出數(shù)字的方法

    在實際工作中,常常需要設(shè)定數(shù)字的輸出格式,如以百分比的形式輸出,或者設(shè)定小數(shù)位數(shù)等,現(xiàn)稍微總結(jié)如下
    2014-01-01
  • Java?Optional用法面試題精講

    Java?Optional用法面試題精講

    這篇文章主要為大家介紹了Java?Optional用法面試題精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Spring?Boot項目集成Knife4j接口文檔的實例代碼

    Spring?Boot項目集成Knife4j接口文檔的實例代碼

    Knife4j就相當(dāng)于是swagger的升級版,對于我來說,它比swagger要好用得多<BR>,這篇文章主要介紹了Spring?Boot項目集成Knife4j接口文檔的示例代碼,需要的朋友可以參考下
    2021-12-12
  • Commons beanutils組件簡介

    Commons beanutils組件簡介

    這篇文章主要介紹了commons beanutils組件的相關(guān)內(nèi)容,以及部分實例和基本用法,需要的朋友可以參考下
    2017-09-09
  • SpringBoot如何通過@Profile注解配置多環(huán)境

    SpringBoot如何通過@Profile注解配置多環(huán)境

    在Spring中,可以使用配置文件的方式來指定不同環(huán)境下所需要的配置信息,本文給大家介紹SpringBoot如何通過@Profile注解配置多環(huán)境,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • 淺談Java 并發(fā)的底層實現(xiàn)

    淺談Java 并發(fā)的底層實現(xiàn)

    這篇文章主要介紹了淺談Java 并發(fā)的底層實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • java采用中文方式顯示時間的方法

    java采用中文方式顯示時間的方法

    這篇文章主要介紹了java采用中文方式顯示時間的方法,實例分析了java時間操作及字符串轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 如何利用NetworkInterface獲取服務(wù)器MAC地址

    如何利用NetworkInterface獲取服務(wù)器MAC地址

    今天介紹一種通用的跨平臺的操作方式,那就是JDK自帶的NetworkInterface接口,該接口在JDK1.4已經(jīng)出現(xiàn),但是功能比較少,JDK1.6之后新增了不少新功能,比較不錯
    2013-08-08
  • log4j.properties 配置(實例講解)

    log4j.properties 配置(實例講解)

    下面小編就為大家?guī)硪黄猯og4j.properties 配置(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

靖边县| 浦县| 大新县| 丁青县| 西和县| 广灵县| 阿克苏市| 武平县| 木兰县| 嘉义市| 扶绥县| 如皋市| 墨江| 巴南区| 垫江县| 萝北县| 靖远县| 民勤县| 嘉善县| 昂仁县| 柘城县| 前郭尔| 辰溪县| 武安市| 雷波县| 民和| 定南县| 乡宁县| 景德镇市| 阿坝| 宁城县| 罗山县| 马关县| 龙游县| 浦北县| 称多县| 庆元县| 湖北省| 尼木县| 宁夏| 靖江市|