背景介绍

目前有一个Spring Boot项目,已经接入一个RabbitMQ Broker,由于业务扩展,需要新增一个RabbitMQ Broker进行消费,由于单个Broker时通过Spring默认配置进行使用,因此需要做出修改

Java客户端开发Demo

ConnectionFactory factory = new ConnectionFactory();
factory.setHost(IP_ADDRESS);
factory.setPort(PORT);
factory.setUsername("root");
factory.setPassword("root123");
factory.setVirtualHost("/");
// 创建链接
Connection connection = factory.newConnection();
// 创建信道,Connection 接口被用来创建一个Channel
Channel channel = connection.createChannel();
// 创建一个type="direct" 持久化、非自动删除的交换机
channel.exchangeDeclare(QUEUE_NAME, "direct", true, false, null);
// 创建一个持久化、非排他的、非自动删除的队列
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);
// 发送一条持久化的消息
String message = "hello world!";
channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
// 关闭资源
channel.close();
connection.close();

单实例配置

  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 {@Beanpublic RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(ConnectionFactory connectionFactory,MessageConverter messageConverter){SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setMessageConverter(messageConverter);return factory;}@Beanpublic MessageConverter messageConverter(){ObjectMapper objectMapper = new ObjectMapper();Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter(objectMapper);return jackson2JsonMessageConverter;}
}

多实例配置

  1. 增加properties配置
# 默认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);}@Beanpublic 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;}@Beanpublic MessageConverter messageConverter(){ObjectMapper objectMapper = new ObjectMapper();Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter(objectMapper);return jackson2JsonMessageConverter;}/*** 声明连接工厂连接开发服务器** @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;}
}

SpringBoot项目配置多个RabbitMQ解决方案相关推荐

  1. springboot项目配置视图解析器无效的问题

    springboot项目配置视图解析器无效的问题 今天springboot尝试配置视图解析器的时候,如图: 一切正常,视图解析器却始终无效.后面发现问题. 在控制器的注解要使用:@Controller ...

  2. SpringBoot项目配置明文密码泄露问题的处理方式

    SpringBoot项目配置明文密码泄露问题的处理方式: 1.引入jar包 <dependency>     <groupId>com.github.ulisesbocchio ...

  3. IDEA SpringBoot项目配置热更新,无需每次手动重启服务器

    IDEA SpringBoot项目配置热更新的步骤 在pom.xml中添加依赖: <dependency><groupId>org.springframework.boot&l ...

  4. Springboot项目配置404错误页面

    项目结构,错误页面路径 因为下面这个项目 静态文件的路径是springboot项目默认路径,所以application.properties都不用配置. 全局错误页面配置类: import org.s ...

  5. springboot项目配置(yml,pom)

    首先使用idea创建一个纯净的springboot项目 1,替换pom文件 <?xml version="1.0" encoding="UTF-8"?&g ...

  6. springboot项目配置ssl证书

    1.首先进入阿里云服务器,搜索ssl证书,免费申请,dns会自动解析该证书,所以不用设置 2.下载tomcat和nginx服务器类型的证书 3.将tomcat服务器类型的文件解压,打开,获得pfx文件 ...

  7. SpringBoot项目配置disconf

    说明: SpringBoot项目通过application.yml实现项目的配置, 配置文件如下: server:     port: 9090     context-path: #/daily/ ...

  8. Springboot项目配置oracle数据库

    前段时间的一个项目需要使用oracle数据库,之前使用的都是Spingboot+Mybatis+Druid+Mysql,没有配置Oracle的经验,现在记录一下 1.使用Navicat Premium ...

  9. Springboot项目配置定时重启案例

    一.如果是Linux环境 1).编写重启脚本timeRestart.sh,内容如下: #! /bin/bash export LANG="en_US.UTF-8" export J ...

最新文章

  1. 十一月第三周学习进度条
  2. vim批量转文件编码
  3. Android之Android studio如何解决Multiple dex files define Landroid/support/a(文件重复引用错误)
  4. wordpress 添加自定义的一定级菜单
  5. ios 简单的计时器游戏 NSUserDefaults NSDate NSTimer
  6. Shell脚本实现SSH免密登录及批量配置管理
  7. 注解的定义与反射调用
  8. 表多个字段与其他表关系,left join on 顺序
  9. 那四年,我们一起逝去的青春
  10. php+分割文本文件,python实现:将文本文件分割成多个小文本文件(php也可实现)...
  11. PHP100视频解压密码以及目录
  12. 阵列信号处理及matlab实现_数字阵列雷达:发射数字波束形成
  13. python 读取png图片 透明度
  14. 15b万用表怎么测电容_万用表怎么用?福禄克15B+一机详解万用表的使用方法
  15. python输入月份判断天数用函数的方法,python 月份天数
  16. rax Picture组件
  17. php pecl libevent,ubuntu – 安装PHP libevent PECL包的问题
  18. 在UE5中创建一个受战锤启发的角色
  19. 再见2018 你好2019
  20. 使用TL-WDN5200H无线网卡

热门文章

  1. Qt开发二维码工具QR二维码生成和识别支持批量生成免费使用
  2. 智慧校园场景智能终端——智慧电子班牌刷新班级管理模式
  3. php实现新闻浏览量,thinkphp实现统计页面浏览量
  4. Docker中安装宝塔
  5. 长沙SEO优化:SEO优化关键词如何进行研究和分析以及网站不同阶段的SEO优化排名策略
  6. classloader是如何查找类的
  7. 数据库mysql字段加换行_数据库字段换行
  8. cesium,实现下雨下雪效果切换
  9. 局域网arp攻击_谈谈电子欺骗中的ARP欺骗
  10. TP5项目放在二级目录下重定向访问不对问题