DirectExchange是RabbitMQ的默认交换机,直接使用routingKey匹配队列。
demo
新建两个springboot 项目,consumer 和producer
(一)添加依赖和配置信息两个项目一样,端口除外
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.properties中添加配置
server.port=7006
spring.rabbitmq.host=139.199.31.248
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=root
(二)配置消费者
添加一个配置类
配置一个routingKey为lizk.queue01的消息队列
/**
* 相当于声明队列
* Created at 2019/11/12
* Created by lizk
* Copyright (C) 2019 SAIC VOLKSWAGEN, All rights reserved.
*/
@Configuration
public class DirectConfig {
@Bean
public Queue directQueue(){
return new Queue("lizk.queue01");
}
}
添加一个消息监听类
监听routingKey为lizk.queue01的队列消息
/**
* 文件名
* Created at 2019/11/12
* Created by lizk
* Copyright (C) 2019 SAIC VOLKSWAGEN, All rights reserved.
*/
@Component
@RabbitListener(queues = "lizk.queue01")
public class DirectRecive {
@RabbitHandler
public void receive(String msg) {
System.out.println("接收消息:---"+msg);
}
}
启动消费者项目,可以发现管理端多了一个队列,但是还没有消息
(三)配置生产者
并写测试类调用
/**
* 文件名
* Created at 2019/11/12
* Created by lizk
* Copyright (C) 2019 SAIC VOLKSWAGEN, All rights reserved.
*/
@Component
public class DirectSender {
@Autowired
private AmqpTemplate amqpTemplate;
public void sender(String msg){
//将消息发送至默认的交换机且routingKey为lizk.queue01
amqpTemplate.convertAndSend("lizk.queue01",msg);
System.out.println("消息发送成功:---"+msg);
}
}
查看生产者日志可以发现消息发送成功
查看消费者日志