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

SpringBoot整合RabbitMQ,三種交換機(jī)類型示例

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

SpringBoot整合RabbitMQ,三種交換機(jī)類型示例

1、流程概括

SpringBoot整合RabbitMQ,三種交換機(jī)類型示例,JAVA全棧學(xué)習(xí)路線,# Linux,# 中間件,java-rabbitmq,spring boot,rabbitmq,mq,后端

2、引入依賴

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

3、配置RabbitMQ連接

在application.properties或application.yml中配置RabbitMQ服務(wù)器的連接參數(shù):

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

4、不同交換機(jī)模式下的使用

4.1、DirectExchange(直連交換機(jī))

消費(fèi)者


import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class DirectConsumer {
    //注冊(cè)一個(gè)隊(duì)列
    @Bean  //啟動(dòng)多次為什么不報(bào)錯(cuò)?啟動(dòng)的時(shí)候,它會(huì)根據(jù)這個(gè)名稱Direct_Q01先去查找有沒(méi)有這個(gè)隊(duì)列,如果有什么都不做,如果沒(méi)有創(chuàng)建一個(gè)新的
    public Queue queue(){
      return   QueueBuilder.durable("Direct_Q01").maxLength(100).build();
    }
    
    //注冊(cè)交換機(jī)
    @Bean
    public DirectExchange exchange(){
        //1.啟動(dòng)的時(shí)候,它會(huì)根據(jù)這個(gè)名稱Direct_E01先去查找有沒(méi)有這個(gè)交換機(jī),如果有什么都不做,如果沒(méi)有創(chuàng)建一個(gè)新的
        return  ExchangeBuilder.directExchange("Direct_E01").build();
    }

    //綁定交換機(jī)與隊(duì)列關(guān)系
    @Bean
    public Binding binding(Queue queue,DirectExchange exchange){
        return BindingBuilder.bind(queue).to(exchange).with("RK01");
    }

    //啟動(dòng)一個(gè)消費(fèi)者
    @RabbitListener(queues = "Direct_Q01")
    public void receiveMessage(String msg){
        System.out.println("收到消息:"+msg);
    }
    
}

生產(chǎn)者

@Service
public class DirectProvider {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(Object message) {
        rabbitTemplate.convertAndSend("Direct_E01", "RK01", message);
    }
}

測(cè)試

@SpringBootTest
class TestApp {

@Autowired
private DirectProvider directProvider;
    
@Test
void test() throws IOException {

        for(int i = 0; i < 10; i++){
            directProvider.send("你好呀"+i);
            System.out.println("發(fā)送成功"+i);
            ThreadUtil.safeSleep(1000);
        }
        System.in.read();
    }
 }

一個(gè)交換機(jī)對(duì)多個(gè)隊(duì)列的特點(diǎn):

SpringBoot整合RabbitMQ,三種交換機(jī)類型示例,JAVA全棧學(xué)習(xí)路線,# Linux,# 中間件,java-rabbitmq,spring boot,rabbitmq,mq,后端

一個(gè)隊(duì)列對(duì)多個(gè)消費(fèi)者特點(diǎn):

SpringBoot整合RabbitMQ,三種交換機(jī)類型示例,JAVA全棧學(xué)習(xí)路線,# Linux,# 中間件,java-rabbitmq,spring boot,rabbitmq,mq,后端

4.2、FanoutExchange(扇形/廣播交換機(jī))

消費(fèi)者

/*
 * Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.
 *
 */
package com.fpl.consumers;

import com.fpl.model.OrderingOk;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * <p>Project: spring-rabbitmq - FanoutConsumer</p>
 * <p>Powered by fpl1116 On 2024-04-08 11:35:22</p>
 * <p>描述:<p>
 * @author penglei
 * @version 1.0
 * @since 1.8
 */
@Configuration
public class FanoutConsumer {
    //注冊(cè)一個(gè)隊(duì)列
    @Bean
    public Queue fanoutQueue1(){
        return   QueueBuilder.durable("Fanout_Q01").build();
    }
    //注冊(cè)交換機(jī)
    @Bean
    public FanoutExchange fanoutExchange(){
        //1.啟動(dòng)的時(shí)候,它會(huì)根據(jù)這個(gè)名稱Direct_E01先去查找有沒(méi)有這個(gè)交換機(jī),如果有什么都不做,如果沒(méi)有創(chuàng)建一個(gè)新的
        return  ExchangeBuilder.fanoutExchange("Fanout_E01").build();
    }
    @Bean //交換機(jī)與隊(duì)列關(guān)系
    public Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){
        return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);
    }

    @RabbitListener(queues = "Fanout_Q01")
    public void receiveMessage(OrderingOk msg){
        System.out.println("FanoutConsumer1 消費(fèi)者1 收到消息:"+msg);
    }
    @RabbitListener(queues = "Fanout_Q01")
    public void receiveMessage32(OrderingOk msg){
        System.out.println("FanoutConsumer1 消費(fèi)者2 收到消息:"+msg);
    }

}

生產(chǎn)者

@Service
public class FanoutProvider {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(Object message) {
        rabbitTemplate.convertAndSend("Fanout_E01", "", message);
    }
}

4.3、TopicExchange(主題交換機(jī))

消費(fèi)者

/*
 * Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.
 *
 */
package com.fpl.consumers;

import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;

/**
 * <p>Project: spring-rabbitmq - TopicConsumer</p>
 * <p>Powered by fpl1116 On 2024-04-08 11:38:20</p>
 * <p>描述:<p>
 * @author penglei
 * @version 1.0
 * @since 1.8
 */
//@Configuration
public class TopicConsumer {

    @Bean
    public TopicExchange topicExchange(){
        return  ExchangeBuilder.topicExchange("Topic_E01").build();
    }
    @Bean
    public Queue topicQueue1(){
        return   QueueBuilder.durable("小龍").build();
    }
    @Bean
    public Queue topicQueue2(){
        return   QueueBuilder.durable("小虎").build();
    }
    @Bean
    public Queue topicQueue3(){
        return   QueueBuilder.durable("小羊").build();
    }
    //注冊(cè)交換機(jī)
    @Bean //交換機(jī)與隊(duì)列關(guān)系
    public Binding TopicBinding1(Queue topicQueue1, TopicExchange topicExchange){
        return BindingBuilder.bind(topicQueue1).to(topicExchange).with("#");
    }
    @Bean //交換機(jī)與隊(duì)列關(guān)系
    public Binding TopicBinding2(Queue topicQueue2,TopicExchange topicExchange){
        return BindingBuilder.bind(topicQueue2).to(topicExchange).with("1.6.*");
    }
    @Bean //交換機(jī)與隊(duì)列關(guān)系
    public Binding TopicBinding3(Queue topicQueue3,TopicExchange topicExchange){
        return BindingBuilder.bind(topicQueue3).to(topicExchange).with("1.8.*");
    }
    @RabbitListener(queues = "小龍")
    public void receiveMessage(String msg){
        System.out.println("小龍 收到消息:"+msg);
    }
    @RabbitListener(queues = "小虎")
    public void receiveMessage2(String msg){
        System.out.println("小虎 收到消息:"+msg);
    }
    @RabbitListener(queues = "小羊")
    public void receiveMessage3(String msg){
        System.out.println("小羊 收到消息:"+msg);
    }
}

生產(chǎn)者文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-849330.html

@Service
public class TopicProvider {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(Girl girl) {
        rabbitTemplate.convertAndSend("Topic_E01",girl.getHeight(), girl);
    }
}

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

本文來(lái)自互聯(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)文章

  • RabbitMQ交換機(jī)類型

    RabbitMQ交換機(jī)類型

    先附加下官網(wǎng)文檔。RabbitMQ的交換機(jī)類型共有四種,是根據(jù)其路由過(guò)程的不同而劃分成的: 直連型交換機(jī)背后的路由算法很簡(jiǎn)單——消息會(huì)傳送給綁定鍵與消息的路由鍵完全匹配的那個(gè)隊(duì)列。 我們用直連交換機(jī)取代了只會(huì)無(wú)腦廣播的扇形交換機(jī),并且具備了選擇性接收消息的

    2024年02月06日
    瀏覽(19)
  • RabbitMq交換機(jī)類型介紹

    RabbitMq交換機(jī)類型介紹

    在RabbitMq中,生產(chǎn)者的消息都是通過(guò)交換器來(lái)接收,然后再?gòu)慕粨Q器分發(fā)到不同的隊(duì)列,再由消費(fèi)者從隊(duì)列獲取消息。這種模式也被成為“發(fā)布/訂閱”。 分發(fā)的過(guò)程中交換器類型會(huì)影響分發(fā)的邏輯。 直連交換機(jī):Direct exchange 扇形交換機(jī):Fanout exchange 主題交換機(jī):Topic excha

    2024年02月12日
    瀏覽(19)
  • rabbitmq的介紹和交換機(jī)類型

    rabbitmq的介紹和交換機(jī)類型

    首先先介紹一個(gè)簡(jiǎn)單的一個(gè)消息推送到接收的流程,提供一個(gè)簡(jiǎn)單的圖 黃色的圈圈就是我們的消息推送服務(wù),將消息推送到 中間方框里面也就是 rabbitMq的服務(wù)器,然后經(jīng)過(guò)服務(wù)器里面的交換機(jī)、隊(duì)列等各種關(guān)系(后面會(huì)詳細(xì)講)將數(shù)據(jù)處理入列后,最終右邊的藍(lán)色圈圈消費(fèi)

    2024年04月12日
    瀏覽(16)
  • (三)丶RabbitMQ的四種類型交換機(jī)

    (三)丶RabbitMQ的四種類型交換機(jī)

    前言:四大交換機(jī)工作原理及實(shí)戰(zhàn)應(yīng)用 ????????交換機(jī)可以理解成具有路由表的路由程序,僅此而已。每個(gè)消息都有一個(gè)稱為路由鍵(routing key)的屬性,就是一個(gè)簡(jiǎn)單的字符串。最新版本的RabbitMQ有四種交換機(jī)類型,分別是Direct exchange、Fanout exchange、Topic exchange、Headers

    2024年04月15日
    瀏覽(21)
  • SpringBoot實(shí)現(xiàn)RabbitMQ的通配符交換機(jī)(SpringAMQP 實(shí)現(xiàn)Topic交換機(jī))

    SpringBoot實(shí)現(xiàn)RabbitMQ的通配符交換機(jī)(SpringAMQP 實(shí)現(xiàn)Topic交換機(jī))

    Topic 類型的 Exchange 與 Direct 相比,都是可以根據(jù) RoutingKey 把消息路由到不同的隊(duì)列。只不過(guò) Topic 類型 Exchange 可以讓隊(duì)列在綁定 Routing key 的時(shí)候使用通配符! Routingkey 一般都是有一個(gè)或多個(gè)單詞組成,多個(gè)單詞之間以”.”分割,例如: snow.com 通配符規(guī)則: # :匹配一個(gè)或多

    2024年04月12日
    瀏覽(29)
  • 【圖解RabbitMQ-6】說(shuō)說(shuō)交換機(jī)在RabbitMQ中的四種類型以及使用場(chǎng)景

    【圖解RabbitMQ-6】說(shuō)說(shuō)交換機(jī)在RabbitMQ中的四種類型以及使用場(chǎng)景

    ?????作者名稱:DaenCode ??作者簡(jiǎn)介:CSDN實(shí)力新星,后端開發(fā)兩年經(jīng)驗(yàn),曾擔(dān)任甲方技術(shù)代表,業(yè)余獨(dú)自創(chuàng)辦智源恩創(chuàng)網(wǎng)絡(luò)科技工作室。會(huì)點(diǎn)點(diǎn)Java相關(guān)技術(shù)棧、帆軟報(bào)表、低代碼平臺(tái)快速開發(fā)。技術(shù)尚淺,閉關(guān)學(xué)習(xí)中······ ??人生感悟:嘗盡人生百味,方知世間冷暖。

    2024年02月07日
    瀏覽(31)
  • golang整合rabbitmq-實(shí)現(xiàn)創(chuàng)建生產(chǎn)者綁定交換機(jī)-創(chuàng)建消費(fèi)者消費(fèi)完整代碼

    golang整合rabbitmq-實(shí)現(xiàn)創(chuàng)建生產(chǎn)者綁定交換機(jī)-創(chuàng)建消費(fèi)者消費(fèi)完整代碼

    1,在生產(chǎn)者端初始化mq連接 2,創(chuàng)建生產(chǎn)者 3,另起一個(gè)go服務(wù)進(jìn)行消費(fèi)者消費(fèi) 后面將會(huì)發(fā)布golang整合es操作的文章

    2024年01月25日
    瀏覽(20)
  • 【學(xué)習(xí)筆記】RabbitMQ02:交換機(jī),以及結(jié)合springboot快速開始

    【學(xué)習(xí)筆記】RabbitMQ02:交換機(jī),以及結(jié)合springboot快速開始

    參考資料 RabbitMQ官方網(wǎng)站 RabbitMQ官方文檔 噼咔噼咔-動(dòng)力節(jié)點(diǎn)教程 4.1 交換機(jī)類型 Exchange (簡(jiǎn)稱X)翻譯為交換機(jī)、交換器、路由器… 注意 :交換機(jī)并不是所有消息中間件都有,但是是一個(gè)很好的概念 交換機(jī)分為以下四個(gè)類型 扇形交換機(jī):Fanout Exchange 直連 主題 頭部 4.2 扇形

    2024年02月07日
    瀏覽(16)
  • RabbitMQ 備份交換機(jī)和死信交換機(jī)

    RabbitMQ 備份交換機(jī)和死信交換機(jī)

    ??為處理生產(chǎn)者將消息推送到交換機(jī)中,交換機(jī)按照消息中的路由鍵及自身策略無(wú)法將消息投遞到指定隊(duì)列中造成消息丟失的問(wèn)題,可以使用備份交換機(jī)。 ??為處理在消息隊(duì)列中到達(dá)TTL的過(guò)期消息,可采用死信交換機(jī)進(jìn)行消息轉(zhuǎn)存。可以通過(guò)死信交換機(jī)的方式實(shí)現(xiàn)延遲隊(duì)

    2024年02月14日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包