springboot版本:1.5.19.RELEASE
Gradle版本:4.10
Gradle的build.gradle中增加引入
compile('org.springframework.boot:spring-boot-starter-amqp')
application.yaml中增加配置
buddie: rabbitmq: consume: host: 127.0.0.1 port: 5672 username: admin password: admin produce: host: 127.0.0.1 port: 5674 username: admin password: admin
增加配置类,配置我们的两个rabbitMQ:
import org.springframework.amqp.core.*; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; 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.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @Configuration public class RabbitConfig { public ConnectionFactory rabbitConfiguration(String host, int port, String username, String password) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setHost(host); connectionFactory.setPort(port); connectionFactory.setUsername(username); connectionFactory.setPassword(password); return connectionFactory; } @Bean("consumeRabbitConnectionFactory") @Primary public ConnectionFactory innerRabbitConfiguration(@Value("${buddie.rabbitmq.consume.host}") String host, @Value("${buddie.rabbitmq.consume.port}") int port, @Value("${buddie.rabbitmq.consume.username}") String username, @Value("${buddie.rabbitmq.consume.password}") String password) { return this.rabbitConfiguration(host, port, username, password); } @Bean("consumeRabbitTemplate") @Primary public RabbitTemplate consumeRabbitTemplate( @Qualifier("consumeRabbitConnectionFactory") ConnectionFactory connectionFactory ) { return new RabbitTemplate(connectionFactory); } public SimpleRabbitListenerContainerFactory rabbitFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); configurer.configure(factory, connectionFactory); return factory; } @Bean("consumeRabbitFactory") public SimpleRabbitListenerContainerFactory consumeRabbitFactory( SimpleRabbitListenerContainerFactoryConfigurer configurer, @Qualifier("consumeRabbitConnectionFactory") ConnectionFactory connectionFactory ) { return this.rabbitFactory(configurer, connectionFactory); } @Bean("produceRabbitConnectionFactory") public ConnectionFactory outerRabbitConfiguration(@Value("${buddie.rabbitmq.produce.host}") String host, @Value("${buddie.rabbitmq.produce.port}") int port, @Value("${buddie.rabbitmq.produce.username}") String username, @Value("${buddie.rabbitmq.produce.password}") String password) { return this.rabbitConfiguration(host, port, username, password); } @Bean("produceRabbitTemplate") public RabbitTemplate produceRabbitTemplate( @Qualifier("produceRabbitConnectionFactory") ConnectionFactory connectionFactory ) { return new RabbitTemplate(connectionFactory); } @Bean("produceRabbitFactory") public SimpleRabbitListenerContainerFactory outerRabbitFactory( SimpleRabbitListenerContainerFactoryConfigurer configurer, @Qualifier("produceRabbitConnectionFactory") ConnectionFactory connectionFactory ) { return this.rabbitFactory(configurer, connectionFactory); } @Bean public Queue topicQueueCreate() { return new Queue("topic.task"); } @Bean public TopicExchange topicExchange() { return new TopicExchange("topic.exchange"); } @Bean public Binding topicBindingCreate() { return BindingBuilder.bind(this.topicQueueCreate()).to(this.topicExchange()).with("topic.task.#"); } }
注意事项:
做为生产者,在启服时,并不会对连接rabbitMQ,更不会去创建Topic,Queue及绑定。
而作为消费者,在启服后,会连接rabbitMQ,并检查Queue是否有消息可消费。
所以应该将消费的rabbitMQ配置,加上@Primary,否则在rabbitMQ上没有对应的Queue时,报错,无法启动服务器
相关推荐
本篇文章主要介绍了Spring Boot 配置多个RabbitMQ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
RabbitMQ作为AMQP的代表性产品,在项目中大量使用。结合现在主流的spring boot,极大简化了开发过程中所涉及到的消息通信问题。
Springboot集成RabbitMQ Springboot 定时任务 Springboot邮件发送 Springboot 集成MongoDB springboot框架本身的一个原因,现在企业中使用springboot越来越多,企业对于求职者对springboot框架的学习程度要求越来越...
SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API SpringBoot非官方教程 | 第十二篇:springboot集成apidoc 缓存篇 SpringBoot非官方教程 | 第十三篇:springboot集成spring ...
她具备SaaS模式切换、完备的RBAC功能、网关统一鉴权、灰度发布、数据权限、可插拔缓存、统一封装缓存的key、表单校验前后端统一验证、字典数据...前后端代码、多种存储系统、分布式事务、分布式定时任务等多个功能和模块...
7、集成RabbitMQ 8、SpringBoot项目linux服务器部署 9、整合Swagger2(文档生成工具) 10、整合JavaMelody(性能监控工具) 11、实用功能SpringBoot热部署 12、实用功能SpringBoot定时器 13、实用功能SpringBoot随...
基于SpringBoot | Mybatis-Plus | RabbitMQ | Vue2 | Element-UI | flowable 的多租户SaaS 开发框架,已支持消息队列、数据权限、动态源、多租户、工作流、数据物理&逻辑双隔离等,为企业级多租户Saas及集团化应用...
SpringBoot集成框架各种实用的组件技术点以及一些框架重要技术点的项目案例的实现,纯属个人技术积累和框架学习,有缺漏之处请指出。 主体版本号 Java v1.8 springboot v2.0.5.RELEASE 各技术点预览目录 组件名称...
- Spring Boot AJAX 跨域,包括 JSONP、Node.js与SpringBoot集成使用反向代理 等。 - springboot-websockets - Spring Boot 使用 Websocket - springboot-webflux - Spring Boot 集成 WebFlux 开发反应式 Web...
系统的主要特点包括:高并发处理能力 :通过使用SpringBoot的异步处理机制和多线程技术,系统能够有效地处理大量的用户请求。缓存优化 :利用Redis作为缓存数据库,存储热门商品和秒杀信息,减少对后端数据库的压力...
`spring boot demo` 是一个用来深度学习并实战 `spring boot` 的项目,目前总共包含 **`63`** 个集成demo,已经完成 **`51`** 个。 该项目已成功集成 actuator(`监控`)、admin(`可视化监控`)、logback(`日志`)、aop...
中间件: 为了提高系统性能和扩展性,可能还会集成消息队列(如RabbitMQ)、缓存(如Redis)等中间件。安全: 系统安全性由Spring Security提供,包括用户认证和权限控制等功能。跨平台: 由于使用了Web技术,该系统...
pl emily-spring-boot-starter -am或./mvnw clean install -pl emily-spring-boot-starter -am参数全程说明-pl--projects选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔)-...
该项目已成功集成batis-aop(AOP自定义多数据源)、multi-datasource-mybatis(使用Mybatis集成多数据源)、quartz(定时任务)、rabbitmq-access(Rabbitmq手动确认模式)、rabbitmq-availability(RabbitMQ消息100%可靠性...
MyBatis :整合 SpringBoot+Mybatis 、SpirngBoot2.0+ 的 SpringBoot+Mybatis 多数据源配置 (TODO:早期文章,不建议阅读,待重构~) SpringBoot 2.0+ 集成 Swagger 官方 Starter + knife4j 增强方案 进阶 Bean映射...
spring boot的开发demo包括mybatis shiro rabbitmq等多个中间件集成
springcloud-zipkin:链路跟踪工具,监控并就持久化微服务集群中调用链路的通畅情况,采用rabbitmq异步传输、elasticsearch负责持久化的方式集成。 #### 软件架构 1、JDK:jdk-8u181-windows-x64。 2、MAVEN:...
Spring Cloud简介 Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud ...
spring boot demo 是一个用来深度学习并实战 spring boot 的项目,目前总共包含 63 个集成demo,已经完成 52 个。 该项目已成功集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求...