springboot
项目中增加入 rabbitmq
, mq
是系统架构设计中的重要一环, mq
具有系统间解耦,异步通信,流量削峰等优点,但是引入 mq
也意味着要增加系统架构的复杂度,需要考虑到 mq
服务的高可用等问题
介绍: rabbitMQ
是实现 AMQP
(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗
AMQP
,即 Advanced Message Queuing Protocol
,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP
的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全
pom文件引入 rabbitmq
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
application.yml
配置文件中增加 rabbitmq
的相关配置
spring: rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest
创建队列
/** * @author: chenmingyu * @date: 2019/5/23 17:29 * @description: 队列配置类 */ @Configuration public class RabbitQueueConfig { /** * 测试队列名称 */ public static final String TEST_QUEUE = "test"; @Bean public Queue Queue() { return new Queue(TEST_QUEUE); } }
生产者实现
/** * @author: chenmingyu * @date: 2019/5/23 17:32 * @description: 生产者 */ @Component public class TestProduce { @Autowired private RabbitTemplate rabbitTemplate; /** * 发送消息 */ public void send(){ System.out.println("发送消息"); rabbitTemplate.convertAndSend(RabbitQueueConfig.TEST_QUEUE,"this is test"); } }
消费者实现
/** * @author: chenmingyu * @date: 2019/5/23 17:31 * @description: 消费者 */ @Component @RabbitListener(queues = RabbitQueueConfig.TEST_QUEUE) public class TestConsumer { @RabbitHandler public void process(String msg) { System.out.println("消费消息 : " + msg); } }
测试
@RunWith(SpringRunner.class) @SpringBootTest public class SpringbootRabbitmqApplicationTests { @Autowired private TestProduce testProduce; @Test public void contextLoads() { testProduce.send(); } }
输出