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

SpringBoot項(xiàng)目配置多個RabbitMQ解決方案

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot項(xiàng)目配置多個RabbitMQ解決方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

背景介紹

目前有一個Spring Boot項(xiàng)目,已經(jīng)接入一個RabbitMQ Broker,由于業(yè)務(wù)擴(kuò)展,需要新增一個RabbitMQ Broker進(jìn)行消費(fèi),由于單個Broker時(shí)通過Spring默認(rèn)配置進(jìn)行使用,因此需要做出修改文章來源地址http://www.zghlxwxcb.cn/news/detail-505656.html

Java客戶端開發(fā)Demo

ConnectionFactory factory = new ConnectionFactory();
factory.setHost(IP_ADDRESS);
factory.setPort(PORT);
factory.setUsername("root");
factory.setPassword("root123");
factory.setVirtualHost("/");
// 創(chuàng)建鏈接
Connection connection = factory.newConnection();
// 創(chuàng)建信道,Connection 接口被用來創(chuàng)建一個Channel
Channel channel = connection.createChannel();
// 創(chuàng)建一個type="direct" 持久化、非自動刪除的交換機(jī)
channel.exchangeDeclare(QUEUE_NAME, "direct", true, false, null);
// 創(chuàng)建一個持久化、非排他的、非自動刪除的隊(duì)列
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);
// 發(fā)送一條持久化的消息
String message = "hello world!";
channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
// 關(guān)閉資源
channel.close();
connection.close();

單實(shí)例配置

  1. pom
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
	<version>2.1.2.RELEASE</version>
</dependency>
  1. 增加properties配置
spring.rabbitmq.username=username
spring.rabbitmq.password=password
spring.rabbitmq.host=host
spring.rabbitmq.virtual-host=/
spring.rabbitmq.port=port
  1. 增加配置類
@Configuration
public class RabbitMqConfiguration {
	@Bean
    public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(ConnectionFactory connectionFactory,MessageConverter messageConverter){
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(messageConverter);
        return factory;
    }

    @Bean
    public MessageConverter messageConverter(){
        ObjectMapper objectMapper = new ObjectMapper();
        Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter(objectMapper);
        return jackson2JsonMessageConverter;
    }
}

多實(shí)例配置

  1. 增加properties配置
# 默認(rèn)rabbit配置
spring.rabbitmq.username=username
spring.rabbitmq.password=password
spring.rabbitmq.host=host
spring.rabbitmq.virtual-host=/
spring.rabbitmq.port=port
# 第2個MQ配置
spring.rabbitmq.second.host=second.host
spring.rabbitmq.second.username=second.username
spring.rabbitmq.second.password=second.password
spring.rabbitmq.second.port=second.port
spring.rabbitmq.second.virtual-host=/
  1. 修改配置類
/**
 * @Description:
 * @Author: admin
 * @Date: 2021/5/11 18:19
 */
@Configuration
public class RabbitMqConfiguration {
    @Primary
    @Bean(name = "rabbitConnectionFactory")
    public ConnectionFactory rabbitConnectionFactory(
            @Value("${spring.rabbitmq.host}") String host,
            @Value("${spring.rabbitmq.port}") int port,
            @Value("${spring.rabbitmq.username}") String username,
            @Value("${spring.rabbitmq.password}") String password,
            @Value("${spring.rabbitmq.virtual-host}") String virtualHost) {
        return connectionFactory(host, port, username, password, virtualHost);
    }

    @Bean
    public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(
            @Qualifier("rabbitConnectionFactory") ConnectionFactory connectionFactory,
            MessageConverter messageConverter) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(messageConverter);
        return factory;
    }

    /**
     * 定義連接
     * @param host
     * @param port
     * @param username
     * @param password
     * @return
     */
    @Bean(name = "secondConnectionFactory")
    public ConnectionFactory secondConnectionFactory(
            @Value("${spring.rabbitmq.second.host}") String host,
            @Value("${spring.rabbitmq.second.port}") int port,
            @Value("${spring.rabbitmq.second.username}") String username,
            @Value("${spring.rabbitmq.second.password}") String password,
            @Value("${spring.rabbitmq.second.virtual-host}") String virtualHost) {
        return connectionFactory(host, port, username, password, virtualHost);
    }

    /**
     * 聲明RabbitTemplate
     * @param connectionFactory
     * @return
     */
    @Bean(name = "secondRabbitTemplate")
    public RabbitTemplate dataadminmqRabbitTemplate(
            @Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate .setMessageConverter(new Jackson2JsonMessageConverter());
        return rabbitTemplate ;
    }
    
    @Bean(name = "secondRabbitListenerContainerFactory")
    public SimpleRabbitListenerContainerFactory secondRabbitListenerContainerFactory(
            @Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory,
            MessageConverter messageConverter) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(messageConverter);
        return factory;
    }
    
    @Bean
    public MessageConverter messageConverter(){
        ObjectMapper objectMapper = new ObjectMapper();
        Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter(objectMapper);
        return jackson2JsonMessageConverter;
    }

    /**
     * 聲明連接工廠連接開發(fā)服務(wù)器
     *
     * @param host
     * @param port
     * @param username
     * @param password
     * @return
     */
    public CachingConnectionFactory connectionFactory(String host, int port, String username,
                                                      String password, String virtualHost) {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setVirtualHost(virtualHost);
        return connectionFactory;
    }
}

到了這里,關(guān)于SpringBoot項(xiàng)目配置多個RabbitMQ解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • springBoot框架 yml配置文件中出現(xiàn)特殊字符解決方案

    springBoot框架 yml配置文件中出現(xiàn)特殊字符解決方案

    springBoot框架 yml配置文件中出現(xiàn)特殊字符問題是我最近才發(fā)現(xiàn)的一個問題,以前常用.properties 格式配置文件,沒發(fā)現(xiàn)此現(xiàn)象,因此此格式的配置文件不存在這種問題,即使有特殊符號也可以正常識別;緩沖yml格式后就不能識別了。并且細(xì)心的人可以明顯的發(fā)現(xiàn)配置文件有問題

    2024年02月16日
    瀏覽(20)
  • 寶蘭德BES安裝及Springboot項(xiàng)目打包部署及websocket解決方案

    寶蘭德BES安裝及Springboot項(xiàng)目打包部署及websocket解決方案

    隨著軟件國產(chǎn)化越來越普及,客戶在實(shí)施中選擇了寶蘭德,這幾天終于弄好,發(fā)個文章記錄一下。 BES安裝JDK使用版本為Kona8.0.1_242 2.bes安裝,在實(shí)施過程中,將安裝步驟整合成shell腳本了,方便新服務(wù)器一鍵安裝,腳本包含內(nèi)容:一鍵安裝參數(shù)檢查、解壓安裝包、導(dǎo)入證書、指

    2024年01月19日
    瀏覽(30)
  • springboot項(xiàng)目出現(xiàn)”java: 錯誤: 無效的源發(fā)行版:17“問題解決方案

    springboot項(xiàng)目出現(xiàn)”java: 錯誤: 無效的源發(fā)行版:17“問題解決方案

    在我個人遇到此問題的情況下,出現(xiàn)此錯誤的原因是springboot的版本與java版本不一致 在spring3更新后,idea在創(chuàng)建springboot項(xiàng)目時(shí)會默認(rèn)選擇spring3,哪怕你選擇的是 java8 的版本 idea默認(rèn)選擇spring3 在你以java8創(chuàng)建spring3的項(xiàng)目后,就一定會出現(xiàn)”java: 錯誤: 無效的源發(fā)行版:17“,如

    2024年02月01日
    瀏覽(34)
  • IntelliJ IDEA創(chuàng)建springboot項(xiàng)目時(shí)不能選擇java8的問題解決方案

    IntelliJ IDEA創(chuàng)建springboot項(xiàng)目時(shí)不能選擇java8的問題解決方案

    最近博主也有創(chuàng)建springboot項(xiàng)目,發(fā)現(xiàn)了IntelliJ IDEA在通過Spring Initilizer初始化項(xiàng)目的時(shí)候已經(jīng)沒有java8版本的選項(xiàng)了。 基于這個問題,有了這篇文章的分享,希望能夠幫助大家克服這個困難。 如圖,現(xiàn)在創(chuàng)建springboot項(xiàng)目的時(shí)候,java版本只有17和21兩個選項(xiàng),剛好今天晚上有刷

    2024年02月04日
    瀏覽(135)
  • SpringBoot Maven 項(xiàng)目打包的藝術(shù)--主清單屬性缺失與NoClassDefFoundError的優(yōu)雅解決方案

    SpringBoot Maven 項(xiàng)目打包的藝術(shù)--主清單屬性缺失與NoClassDefFoundError的優(yōu)雅解決方案

    這兩個問題的出現(xiàn)場景是,你打包完一個SpringBoot、Maven項(xiàng)目,上傳Jar包到服務(wù)器運(yùn)行的時(shí)候遇到的。也算是比較經(jīng)典的兩個問題了,如果你在打包項(xiàng)目的時(shí)候,很容易遇到,這篇文章就是用來一勞永逸地解決它們。 1.1、Jar包運(yùn)行:沒有主清單屬性 解決方案 其實(shí)這個問題主要

    2024年04月14日
    瀏覽(29)
  • SpringBoot項(xiàng)目啟動報(bào)java.nio.charset.MalformedInputException Input length = 1解決方案

    SpringBoot項(xiàng)目啟動報(bào)java.nio.charset.MalformedInputException Input length = 1解決方案

    SpringBoot啟動報(bào)錯java.nio.charset.MalformedInputException: Input length = 1 出現(xiàn)這個的原因,就是解析yml文件時(shí),中文字符集不是 utf-8 的原因,這是maven在項(xiàng)目編譯時(shí),默認(rèn)字符集編碼是GBK。 檢查pom文件 要將編譯字符集改成utf-8。 IDEA編碼格式修改 文件修改 如果你的application.yml文件是把

    2024年02月20日
    瀏覽(17)
  • IDEA構(gòu)建springBoot新項(xiàng)目時(shí)JDK只有17和21,無法選擇JDK8解決方案

    IDEA構(gòu)建springBoot新項(xiàng)目時(shí)JDK只有17和21,無法選擇JDK8解決方案

    今天創(chuàng)建springboot新項(xiàng)目時(shí),發(fā)現(xiàn)IDEA里JDK選項(xiàng)只有17和21,無法選擇本機(jī)的JDK8,網(wǎng)上查資料后發(fā)現(xiàn)是springboot2.7于11.24號后停止維護(hù),基于2.7和java8的spring Initializ官方不再維護(hù),解決方案是在server?URL欄,改start.spring.io為阿里源:https://start.aliyun.com/

    2024年01月17日
    瀏覽(27)
  • 創(chuàng)建延時(shí)隊(duì)列、springboot配置多個rabbitmq

    創(chuàng)建延時(shí)隊(duì)列、springboot配置多個rabbitmq

    type選擇fanout (圖中已經(jīng)綁定,紅框?yàn)榻壎ㄟ^程) (圖中已經(jīng)綁定,紅框?yàn)榻壎ㄟ^程) 延時(shí)隊(duì)列時(shí)間到之后,將消息發(fā)送給queue.file_destroy,執(zhí)行刪除文件操作 RabbitConfig配置類 mq1 mq2 application-prod.yaml mq1消費(fèi)端,發(fā)消息給mq2 mq2消費(fèi)端用于遞歸刪除文件 FileHelper工具類遞歸刪除文件或文

    2024年02月11日
    瀏覽(20)
  • springboot項(xiàng)目使用mybatis-plus 時(shí)出現(xiàn) Property ‘mapperLocations‘ was not specified的3個解決方案

    springboot項(xiàng)目使用mybatis-plus 時(shí)出現(xiàn) Property ‘mapperLocations‘ was not specified的3個解決方案

    在 spring boot 項(xiàng)目中,使用 mybatis-plus 會出現(xiàn) Property ‘mapperLocations‘ was not specified 的提示。出現(xiàn)該提示,但可能不影響項(xiàng)目的運(yùn)行。這是怎么回事? 在解決這個問題之前,要先討論一下 mybatis 的 xml 文件放的位置。通常有3個地方,如下圖: 方案1:放在 1 的位置,IEDA默認(rèn)不會

    2024年02月12日
    瀏覽(31)
  • RabbitMQ--消息堆積--解決方案

    原文網(wǎng)址:RabbitMQ--消息堆積--解決方案_IT利刃出鞘的博客-CSDN博客 本文介紹如何處理RabbitMQ消息堆積(積壓)。 對于消息隊(duì)列(MQ)來說,消息丟失/消息重復(fù)/消費(fèi)順序/消息堆積(積壓)是比較常見的問題,都屬于消息異常,這幾個問題比較重要,面試中也會經(jīng)常問到。 消息堆積即

    2023年04月08日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包