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);
}
}
查看生產者日誌可以發現消息發送成功
查看消費者日誌