RabbitMQ是目前很是热门的一款消息中间件,无论是互联网大厂仍是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。java
Spring Boot使用了这么久,套路差很少摸清楚了。Spring Boot与其余组件进行整合,无非就是加入pom依赖,接着配置一些基本信息,而后就可使用相关注解进行开发了。git
RabbitMQ也是相同的套路,第一步要引入依赖。要引入的依赖比较容易记,RabbitMQ实现了AMQP协议,引入依赖spring-boot-starter-amqp
。github
<!-- rabbitmq依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
第二步要配置RabbitMQ链接信息,包括主机、端口号、用户名和密码。RabbitMQ配置信息:spring
spring.rabbitmq.host=192.168.16.128 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest
若是没有安装RabbitMQ,我推荐使用Docker快速安装和启动,启动命令:docker
docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.8.0-beta.4-management
第三步实现生产和消费者。异步
生产者用来生产消息并进行发送。须要用到RabbitTemplate
。RabbitTemplate
是发送消息的关键类,convertAndSend
方法能够指定消息发送的交换器、路由键、消息内容等。spring-boot
@Component public class Producer { @Autowired RabbitTemplate rabbitTemplate; public void produce() { String message = new Date() + "Beijing"; System.out.println("生产者生产消息=====" + message); rabbitTemplate.convertAndSend("rabbitmq_queue", message); } }
消费者消费生产者发送的消息。实现消费者主要用到注解@RabbitListener
。@RabbitListener
是一个功能强大的注解。这个注解里面能够注解配置@QueueBinding、@Queue、@Exchange直接经过这个组合注解一次性搞定多个交换机、绑定、路由、而且配置监听功能等。测试
@RabbitListener(queues = "rabbitmq_queue")
@RabbitListener(queuesToDeclare = @Queue("myQueue"))
@RabbitListener(bindings = @QueueBinding(value = @Queue("myQueue"), key = "mobi", exchange = @Exchange("myExchange")))
本文使用@RabbitListener自动建立一个队列。code
@Component public class Consumer { @RabbitHandler @RabbitListener(queuesToDeclare = @Queue("rabbitmq_queue")) public void process(String message) { System.out.println("消费者消费消息=====" + message); } }
第四步测试。为了方便,写一个测试类生产消息。而后启动工程,运行测试类,使生产者发送消息,不出意外消费者将会消费消息,在控制台输出信息。xml
@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Autowired Producer producer; @Test public void contextLoads() { producer.produce(); } }
操做以后能够在测试控制台看到生产者消息发送成功,在该工程的控制台看到消息消费成功。
访问RabbitMQ控制面板也会看到有消息。
Spring Boot极大的简化各类组件的使用,在实际应用中,当一个服务处理完成以后能够将消息放进RabbitMQ消息队列,另一个服务从队列中取消息进行消费,这样能够下降服务之间的耦合,实现一些异步的操做。本文仅做为一个简单demo供参考。