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

SpringBoot整合RabbitMQ實(shí)現(xiàn)交換機(jī)與隊(duì)列的綁定

 更新時(shí)間:2022年05月28日 09:50:32   作者:IT利刃出鞘  
這篇文章將通過幾個(gè)實(shí)例為大家介紹一些SpringBoot中RabbitMQ如何綁定交換機(jī)(交換器)與隊(duì)列,文中的示例代碼講解詳細(xì),感興趣的可以了解一下

簡介

本文用實(shí)例介紹SpringBoot中RabbitMQ如何綁定交換機(jī)(交換器)與隊(duì)列。

配置方法概述

交換機(jī)

下邊兩種方式等價(jià)。

ExchangeBuilder.topicExchange(EXCHANGE_TOPIC_WELCOME).durable(true).build();
new TopicExchange(EXCHANGE_TOPIC_WELCOME, true, false)

隊(duì)列

下邊兩種方式等價(jià)

QueueBuilder.durable("Hi").build();
new Queue(QUEUE_HI, true)

綁定

下邊兩種方式等價(jià)

注意:第一種的參數(shù)并不是字符串。

BindingBuilder.bind(helloQueue).to(welcomExchange).with("hello.#")
new Binding("Queue@hello", Binding.DestinationType.QUEUE,
                "Exchange@topic.welcome", "hello.#", null)

法1:配置類(簡潔方法)(推薦)

package com.example.config;
 
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class RabbitMQRouterConfig {
    public static final String QUEUE_HELLO              = "Queue@hello";
    public static final String QUEUE_HI                 = "Queue@hi";
    public static final String EXCHANGE_TOPIC_WELCOME   = "Exchange@topic.welcome";
    public static final String ROUTINGKEY_HELLOS        = "hello.#";
 
    @Autowired
    private AmqpAdmin amqpAdmin;
 
    @Bean
    public Object initBindingTest() {
        amqpAdmin.declareExchange(new TopicExchange(EXCHANGE_TOPIC_WELCOME, true, false));
 
        amqpAdmin.declareQueue(new Queue(QUEUE_HI, true));
        amqpAdmin.declareQueue(new Queue(QUEUE_HELLO, true));
 
        amqpAdmin.declareBinding(new Binding(QUEUE_HELLO, Binding.DestinationType.QUEUE,
                EXCHANGE_TOPIC_WELCOME, ROUTINGKEY_HELLOS, null));
 
        return new Object();
    }
}

amqpAdmin.declareBinding

需要一個(gè)Binding對象作為參數(shù)

  1. exchange:交換器名稱
  2. type:交換器類型。BuiltinExchangeType枚舉類,有以下4中類型交換器:DIRECT(“direct”), FANOUT(“fanout”), TOPIC(“topic”), HEADERS(“headers”)
  3. durable:設(shè)置是否持久化。true:持久化,false:非持久化。持久化可以將交換器存盤,在服務(wù)器重啟時(shí)不會丟失相關(guān)消息。
  4. autoDelete:設(shè)置是否自動刪除。true:自動刪除,false:不自動刪除。自動刪除的前提是至少有一個(gè)隊(duì)列或交換器與這個(gè)交換器綁定,之后所有與這個(gè)交換器綁定的隊(duì)列或交換器都與此交換器解綁。
  5. internal:設(shè)置是否內(nèi)置的。true:內(nèi)置交換器,false:非內(nèi)置交換器。內(nèi)置交換器,客戶端無法直接發(fā)送消息到這個(gè)交換器中,只能通過交換器路由到交換器這種方式。
  6. arguments:其他一些結(jié)構(gòu)化參數(shù)。如備份交換器:alternate-exchange、超時(shí)時(shí)間。示例配置超時(shí)時(shí)間方法:
Map<String, Object> params = new HashMap();
params.put("x-message-ttl", 2000);
amqpAdmin.declareBinding(new Binding(QUEUE_HELLO, Binding.DestinationType.QUEUE,
                EXCHANGE_TOPIC_WELCOME, ROUTINGKEY_HELLOS, params));

法2:配置類(繁瑣方法)(不推薦)

不推薦的原因

適用于隊(duì)列和交換器不多時(shí)。

代碼示例

package com.lly.order.message;
 
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class RabbitMQConfig {
    public final static String QUEUE_DIRECT     = "Queue@direct";
    public final static String QUEUE_TOPIC_ONE  = "Queue@topic_one";
    public final static String TOPIC_QUEUE_TWO  = "Queue@topic_two";
    public final static String QUEUE_FANOUT_ONE = "Queue@fanout_one";
    public final static String QUEUE_FANOUT_TWO = "Queue@fanout_two";
 
    public final static String EXCHANGE_TOPIC   = "Exchange@topic";
    public final static String EXCHANGE_FANOUT  = "Exchange@fanout";
 
    public final static String ROUTINGKEY_TOPIC_ONE = "hello.key";
    public final static String ROUTINGKEY_TOPIC_TWO = "*.key";
 
	//  direct模式隊(duì)列
    @Bean
    public Queue directQueue() {
        return new Queue(QUEUE_DIRECT, true);
    }
	
	//  topic 訂閱者模式隊(duì)列
    @Bean
    public Queue topicQueueOne() {
        return new Queue(QUEUE_TOPIC_ONE, true);
    }
    @Bean
    public Queue topicQueueTwo() {
        return new Queue(TOPIC_QUEUE_TWO, true);
    }
	
	//  fanout 廣播者模式隊(duì)列
    @Bean
    public Queue fanoutQueueOne() {
        return new Queue(QUEUE_FANOUT_ONE, true);
    }
    @Bean
    public Queue fanoutQueueTwo() {
        return new Queue(QUEUE_FANOUT_TWO, true);
    }
	
	//  topic 交換器
    @Bean
    public TopicExchange topExchange() {
        return new TopicExchange(EXCHANGE_TOPIC);
    }
	
	//  fanout 交換器
    @Bean
    public FanoutExchange fanoutExchange() {
        return new FanoutExchange(EXCHANGE_FANOUT);
    }
 
	//   訂閱者模式綁定
    @Bean
    public Binding topicExchangeBingingOne() {
        return BindingBuilder.bind(topicQueueOne()).to(topExchange()).with(ROUTINGKEY_TOPIC_ONE);
    }
 
    @Bean
    public Binding topicExchangeBingingTwo() {
        return BindingBuilder.bind(topicQueueTwo()).to(topicExchange()).with(ROUTINGKEY_TOPIC_TWO);
    }
	
	//   廣播模式綁定
    @Bean
    public Binding fanoutExchangeBingingOne() {
        return BindingBuilder.bind(fanoutQueueOne()).to(fanoutExchange());
    }
 
    @Bean
    public Binding fanoutExchangeBingingTwo() {
        return BindingBuilder.bind(fanoutQueueTwo()).to(fanoutExchange());
    }
}

法3:使用方配置(不推薦)

不推薦的原因

RabbitMQ的配置最好是統(tǒng)一在一個(gè)地方配置,分散配置不利于后期維護(hù)。

使用方法

@Component
public class Receiver {
    @RabbitListener(queues = "hello")
    public void process(String hello) {
        System.out.println ("Receiver : "  + hello);
    }
 
	@RabbitListener(bindings = @QueueBinding(
			exchange = @Exchange(value = "Exchange@topic.Hello",durable = "true",type = "topic"),
			value    = @Queue(value = "Queue@Hello",durable = "true"),
			key      = "key.#"
	))
	public void processMessage1(Message message) {
		System.out.println(message);
	}
}

法4:MQ服務(wù)端網(wǎng)頁(不推薦)

不推薦的原因

使用方法

添加交換器

http://localhost:15672/#/exchanges   //例如:Exchange@topic.Hello

添加隊(duì)列

http://localhost:15672/#/queues            //例如:Queue@Hello

交換器添加路由鍵

http://localhost:15672/#/exchanges=> 點(diǎn)擊交換器名字=> Binding=> 添加隊(duì)列與路由

到此這篇關(guān)于SpringBoot整合RabbitMQ實(shí)現(xiàn)交換機(jī)與隊(duì)列的綁定的文章就介紹到這了,更多相關(guān)SpringBoot RabbitMQ綁定交換機(jī) 隊(duì)列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java集合中的WeakHashMap、IdentityHashMap、EnumMap詳解

    Java集合中的WeakHashMap、IdentityHashMap、EnumMap詳解

    這篇文章主要介紹了Java集合中的WeakHashMap、IdentityHashMap、EnumMap詳解,HashMap的key保留了對實(shí)際對象的強(qiáng)引用,這意味著只要HashMap對象不被銷毀,還HashMap的所有key所引用的對象就不會被垃圾回收,需要的朋友可以參考下
    2023-09-09
  • 你肯定能看懂的Java IO相關(guān)知識總結(jié)

    你肯定能看懂的Java IO相關(guān)知識總結(jié)

    群里有大佬說想讓我寫一篇NIO,一直也沒寫,但是和同事聊天也說對Java的IO不是很清晰,因此今天就寫下Java的io,先打個(gè)基礎(chǔ),下次寫NIO,需要的朋友可以參考下
    2021-05-05
  • Java線程池流程編排運(yùn)用實(shí)戰(zhàn)源碼

    Java線程池流程編排運(yùn)用實(shí)戰(zhàn)源碼

    這篇文章主要介紹了Java線程池流程編排運(yùn)用實(shí)戰(zhàn)源碼,就在流程引擎的基礎(chǔ)上運(yùn)用?ThreadPoolExecutor,使用線程池實(shí)現(xiàn)?SpringBean?的異步執(zhí)行
    2022-03-03
  • java正則表達(dá)式學(xué)習(xí)筆記之命名捕獲

    java正則表達(dá)式學(xué)習(xí)筆記之命名捕獲

    這篇文章主要為大家詳細(xì)介紹了java正則表達(dá)式中的命名捕獲,感興趣的小伙伴們可以參考一下
    2016-02-02
  • SpringSecurity實(shí)現(xiàn)動態(tài)加載權(quán)限信息的方法

    SpringSecurity實(shí)現(xiàn)動態(tài)加載權(quán)限信息的方法

    這篇文章主要介紹了SpringSecurity實(shí)現(xiàn)動態(tài)加載權(quán)限信息,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定需要的朋友可以參考下
    2022-01-01
  • SpringBoot?JavaMailSender發(fā)送郵件功能(實(shí)例詳解)

    SpringBoot?JavaMailSender發(fā)送郵件功能(實(shí)例詳解)

    JavaMailSender是Spring提供的,非常好用的,實(shí)現(xiàn)郵件發(fā)送的接口 ,這篇文章主要介紹了SpringBoot?JavaMailSender發(fā)送郵件功能,需要的朋友可以參考下
    2024-03-03
  • 詳解Java中的ReentrantLock鎖

    詳解Java中的ReentrantLock鎖

    這篇文章主要介紹了Java中ReentrantLock鎖的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • Mybatis-Plus BaseMapper的用法詳解

    Mybatis-Plus BaseMapper的用法詳解

    這篇文章主要介紹了Mybatis-Plus BaseMapper的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringBoot攔截器使用精講

    SpringBoot攔截器使用精講

    攔截器可以根據(jù) URL 對請求進(jìn)行攔截,主要應(yīng)用于登陸校驗(yàn)、權(quán)限驗(yàn)證、亂碼解決、性能監(jiān)控和異常處理等功能上。SpringBoot同樣提供了攔截器功能。 本文將為大家詳細(xì)介紹一下
    2021-12-12
  • springcloud連接遠(yuǎn)程nacos失敗顯示localhost服務(wù)連接失敗的問題解決

    springcloud連接遠(yuǎn)程nacos失敗顯示localhost服務(wù)連接失敗的問題解決

    這篇文章主要介紹了springcloud連接遠(yuǎn)程nacos失敗顯示localhost服務(wù)連接失敗的問題解決,文中有詳細(xì)的代碼示例供大家參考,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-03-03

最新評論

灵川县| 论坛| 康乐县| 三都| 长葛市| 呼图壁县| 吐鲁番市| 勐海县| 广元市| 十堰市| 右玉县| 新兴县| 博野县| 师宗县| 怀化市| 博客| 阆中市| 内黄县| 遂宁市| 年辖:市辖区| 静海县| 株洲市| 宽甸| 乌兰县| 郯城县| 如皋市| 苗栗市| 郸城县| 驻马店市| 芜湖市| 江城| 苗栗市| 巢湖市| 岐山县| 比如县| 祁阳县| 保德县| 江油市| 广州市| 遵义市| 建昌县|