<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Springboot 支持多MQ數(shù)據(jù)源

          共 13847字,需瀏覽 28分鐘

           ·

          2021-03-03 11:00

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          76套java從入門到精通實(shí)戰(zhàn)課程分享

          maven依賴:

          config set maxmemory-policy allkeys-lru
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-amqp</artifactId>
                      <version>2.2.5-RELEASE</version>
                  </dependency>

          MQ配置(配置 normal、soft 兩個(gè) MQ 數(shù)據(jù)源):

          config set maxmemory-policy allkeys-lru
          spring:
            rabbitmq:
              normal:
                host: 192.168.96.8
                port: 5672
                username: guest
                password: guest
                template:
                  retry:
                    enabled: true   #失敗重試
                    initial-interval: 10000ms    #第一次重試間隔時(shí)長
                    max-interval: 30000ms        #最大重試間隔時(shí)長
                    multiplier: 2    # 下次重試間隔的倍數(shù) 2:重試間隔是上次的2倍
                listener:
                  simple:
                    acknowledge-mode: manual  # 手動(dòng)確認(rèn)ack
              soft:
                host: 192.168.96.6
                port: 5672
                username: guest
                password: guest
                template:
                  retry:
                    enabled: true   #失敗重試
                    initial-interval: 10000ms    #第一次重試間隔時(shí)長
                    max-interval: 30000ms        #最大重試間隔時(shí)長
                    multiplier: 2    # 下次重試間隔的倍數(shù) 2:重試間隔是上次的2倍
                listener:
                  simple:
                    acknowledge-mode: manual  # 手動(dòng)確認(rèn)ack

          config配置:

          config set maxmemory-policy allkeys-lru
          package com.xiaodeai.iot.parser.mq.conf;
           
          import com.rabbitmq.client.Channel;
          import com.xiaodeai.common.core.constant.LogTypeEnum;
          import com.xiaodeai.common.core.utils.LoggerUtil;
          import com.xiaodeai.iot.core.constants.IotConstants;
          import com.xiaodeai.iot.core.enums.MqQueue;
          import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
          import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
          import org.springframework.amqp.rabbit.connection.Connection;
          import org.springframework.amqp.rabbit.connection.ConnectionFactory;
          import org.springframework.amqp.rabbit.core.RabbitTemplate;
          import org.springframework.beans.factory.annotation.Qualifier;
          import org.springframework.beans.factory.annotation.Value;
          import org.springframework.beans.factory.config.ConfigurableBeanFactory;
          import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
          import org.springframework.context.annotation.Bean;
          import org.springframework.context.annotation.Configuration;
          import org.springframework.context.annotation.Primary;
          import org.springframework.context.annotation.Scope;
           
           
          /**
           * rabbitmq 多數(shù)據(jù)源配置類
           **/
          @Configuration
          public class MultiRabbitMqConfig {
           
              @Bean(name = "normalConnectionFactory")
              @Primary
              public ConnectionFactory normalConnectionFactory(
                      @Value("${spring.rabbitmq.normal.host}") String host, @Value("${spring.rabbitmq.normal.port}") int port,
                      @Value("${spring.rabbitmq.normal.username}") String username, @Value("${spring.rabbitmq.normal.password}") String password) {
                  CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
                  connectionFactory.setHost(host);
                  connectionFactory.setPort(port);
                  connectionFactory.setUsername(username);
                  connectionFactory.setPassword(password);
                  return connectionFactory;
              }
           
              @Bean(name = "softConnectionFactory")
              public ConnectionFactory softConnectionFactory(
                      @Value("${spring.rabbitmq.soft.host}") String host,
                      @Value("${spring.rabbitmq.soft.port}") int port,
                      @Value("${spring.rabbitmq.soft.username}") String username,
                      @Value("${spring.rabbitmq.soft.password}") String password
              ) {
                  CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
                  connectionFactory.setHost(host);
                  connectionFactory.setPort(port);
                  connectionFactory.setUsername(username);
                  connectionFactory.setPassword(password);
                  return connectionFactory;
              }
           
              @Bean(name = "normalRabbitTemplate")
              @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)//必須是prototype類型
              @Primary
              public RabbitTemplate normalRabbitTemplate(
                      @Qualifier("normalConnectionFactory") ConnectionFactory connectionFactory
              ) {
                  RabbitTemplate normalRabbitTemplate = new RabbitTemplate(connectionFactory);
                  return normalRabbitTemplate;
              }
           
              @Bean(name = "softRabbitTemplate")
              public RabbitTemplate softRabbitTemplate(
                      @Qualifier("softConnectionFactory") ConnectionFactory connectionFactory
              ) {
                  RabbitTemplate softRabbitTemplate = new RabbitTemplate(connectionFactory);
                  return softRabbitTemplate;
              }
           
              @Bean(name = "normalFactory")
              public SimpleRabbitListenerContainerFactory normalFactory(
                      SimpleRabbitListenerContainerFactoryConfigurer configurer,
                      @Qualifier("normalConnectionFactory") ConnectionFactory connectionFactory
              ) {
                  SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
                  configurer.configure(factory, connectionFactory);
                  return factory;
              }
           
              @Bean(name = "softFactory")
              public SimpleRabbitListenerContainerFactory softFactory(
                      SimpleRabbitListenerContainerFactoryConfigurer configurer,
                      @Qualifier("softConnectionFactory") ConnectionFactory connectionFactory
              ) {
                  SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
                  configurer.configure(factory, connectionFactory);
                  return factory;
              }
           
              /**  
               * 綁定 queue、exchange、routing
               */
              @Bean
              public Channel runNormalQueue(@Qualifier("normalConnectionFactory") ConnectionFactory connectionFactory) {
                  Connection connection = connectionFactory.createConnection();
                  Channel channel = connection.createChannel(false);
                  try {
                      channel.queueDeclare("hello1"truefalsefalse, null);
                      channel.queueDeclare("hello2"truefalsefalse, null);
                      
                      channel.queueBind("hello1""test_exchange""hello1.#");
                      channel.queueBind("hello2""test_exchange""hello2.#");
                  } catch (Exception e) {
                      
                  }
           
                  return channel;
              }
           
              @Bean
              public Channel runSoftQueue(@Qualifier("softConnectionFactory") ConnectionFactory connectionFactory) {
                  Connection connection = connectionFactory.createConnection();
                  Channel channel = connection.createChannel(false);
                  try {
                      channel.queueDeclare("hello3"truefalsefalse, null);
                      channel.queueBind("hello3""test_exchange_1""hello3.#");
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
                  return channel;
              }}


          代碼調(diào)用:

          config set maxmemory-policy allkeys-lru
              @Resource(name = "normalRabbitTemplate")
              private RabbitTemplate normalRabbitTemplate;
           
              @Resource(name = "softRabbitTemplate")
              private RabbitTemplate softRabbitTemplate;
           
              /**
               * rabbitmq 消息推送
               *
               * @param exchange 路由
               * @param routing mq路由
               * @param msg 消息內(nèi)容
               */
              public void sendMsg(String exchange, String routing, Object msg) {
          //        normalRabbitTemplate.convertAndSend(exchange, routing, msg);
                  softRabbitTemplate.convertAndSend(exchange, routing, msg);
              }

          ————————————————

          版權(quán)聲明:本文為CSDN博主「scanklm」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

          原文鏈接:

          https://blog.csdn.net/sxg0205/article/details/114079321





          粉絲福利:Java從入門到入土學(xué)習(xí)路線圖

          ??????

          ??長按上方微信二維碼 2 秒


          感謝點(diǎn)贊支持下哈 

          瀏覽 138
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品日韩无码有码 | 无码xxxxx | 亚洲成人网在线免费观看 | 日韩啪啪网站 | 青青操逼视频在线观看 |