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 Spring Boot 是一个流行的 Java 框架,用于快速构建生产级别的应用程序。RabbitMQ 是一个消息队列中间件,用于实现异步消息处理和队列管理。配置多个 RabbitMQ 实例是为了提高系统的...
项目中的`RabbitMq.docx`可能包含RabbitMQ和SpringBoot集成的详细教程,包括如何配置、发送和接收消息的示例代码。而`文件说明.txt`可能是对项目文件的简要介绍,解释了各个文件的作用和使用方法。 **项目结构** `...
在RabbitMQ的发布/订阅模式下,生产者发布消息到一个交换机,交换机再根据预定义的路由规则将消息分发到一个或多个队列。消费者则订阅这些队列,接收到消息。这种模式适用于一对多的关系,比如广播通知或者日志记录...
2. **Publish/Subscribe模式**:在这种模式下,生产者发布消息到一个主题,而多个消费者可以订阅该主题。每个消费者都可以接收到所有发布到该主题的消息,实现一对多的消息广播。 3. **Topic模式**:这是介于Direct...
在本文中,我们将深入探讨如何使用SpringBoot与RabbitMQ构建一个可...实际应用中,你可能需要处理更复杂的情况,如多个消费者、交换机、路由键等。不过,这个简单的Demo为你提供了理解RabbitMQ与SpringBoot结合的基础。
总结来说,"springboot+reids_rabbitmq"项目是利用Spring Boot构建一个后端服务,结合Redis进行数据缓存,利用RabbitMQ进行消息传递和任务调度,以实现高并发场景下的秒杀功能。这种架构设计不仅提高了系统的响应...
在IT行业中,SpringBoot是一个广泛使用的Java框架,它简化了Spring应用的初始搭建以及开发过程。...在实际项目中,还可以根据需求配置多个交换机、队列和路由键,以满足不同场景下的消息通信需求。
每个队列可以有零个或多个消费者监听。 6. **绑定(Bindings)**:将队列与交换机绑定,指定消息如何从交换机流向队列。可以基于路由键(Routing Key)进行绑定。 7. **生产者(Producer)**:在Spring Boot应用中...
标题中的“springboot整合rabbitMq和多数据源动态切换和跨域访问和gradle加maven和shiro安全框架和lombok自动getset生成”表明这是一个关于Spring Boot集成多个技术的项目。以下是对这些技术及其整合的详细解释: 1...
在本文中,我们将深入探讨如何使用Spring Boot、WebSocket、STOMP协议和RabbitMQ来构建一个功能完善的多人聊天室系统。这些技术的结合为实时通信提供了高效且可靠的解决方案。 首先,Spring Boot是Java开发Web应用...
这个例子只是一个基础的示例,实际应用中可能需要处理更复杂的情况,如多个消费者、消息确认、事务和死信队列等。Spring AMQP提供了丰富的API和工具,可以满足各种高级需求。通过进一步学习和实践,你可以更好地利用...
SpringBoot 整合 RabbitMQ 的过程涉及到多个关键知识点,这些知识点包括了消息中间件的基本概念、SpringBoot 的集成方式、RabbitMQ 的配置与使用,以及相关工具的配合。以下是对这些内容的详细阐述。 首先,...
RabbitMQ 的安装方法网上有很多教程,这里就不重复了。需要注意的是,在使用 RabbitMQ 之前,需要先安装 RabbitMQ 服务器。 二、依赖配置 在使用 RabbitMQ 之前,需要在项目的 pom.xml 文件中添加 RabbitMQ 的依赖...
SpringBoot是Spring框架的轻量级启动器,简化了设置和配置,使得集成RabbitMQ变得非常便捷。 首先,让我们了解这三种模式的基本概念: 1. **Direct模式**: Direct模式是最简单的模式,类似于邮局的信件分发。...
2. 主题模式(Topic Mode):主题模式扩展了队列模式,允许使用通配符订阅多个队列。生产者发送的消息包含一个路由键,消费者根据这个键来订阅消息。这种模式适用于一对多的通信,例如,不同的事件类型可以映射到...
本教程将详细介绍如何使用SpringBoot集成RabbitMQ来实现一个延时队列,并探讨消息发送与消费确认机制以及消费者端的策略模式应用。 首先,SpringBoot是Java开发者广泛使用的快速开发框架,它简化了Spring的配置和...
在SpringBoot中,配置一个Fanout交换器,不设置路由键,然后创建一个或多个队列绑定到这个交换器,即可实现广播效果。 3. **Direct模式**:直接模式基于路由键(Routing Key)匹配来决定消息发送到哪个队列。生产者...
**Spring Boot 集成 RabbitMQ 知识点详解** Spring Boot 是一款基于 Spring ...在实际项目中,还可以根据业务需求,使用更多的 RabbitMQ 功能,如工作队列、发布/订阅模式、路由键策略等,以优化系统架构和提高性能。
Springboot集成RabbitMQ Springboot 定时任务 Springboot邮件发送 Springboot 集成MongoDB springboot框架本身的一个原因,现在企业中使用springboot越来越多,企业对于求职者对springboot框架的学习程度要求越来越...