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();
}
} 输出