主题模式key使用xx.xx这种 #表示任意
1.使用注解@RabbitListener @QueueBinding同时完成路由交换机的创建与绑定监听
@Component
public class MqListener {
@RabbitListener(queues = "xzh")
public void listenXzhQueue(String mess){
System.out.println("mq消费消息:"+mess);
}
@RabbitListener(queues = "fanout.queue1")
public void listenFanoutQueue1(String mess){
System.out.println("fanout1:"+mess);
}
@RabbitListener(queues = "fanout.queue2")
public void listenFanoutQueue2(String mess){
System.out.println("fanout2:"+mess);
}
@RabbitListener(bindings = @QueueBinding(
value = @Queue("direct.queue1"), //队列
exchange = @Exchange(value = "direct",type = ExchangeTypes.DIRECT), //交换机
key = {"red","blue"} //key
))
public void listenDirectQueue1(String mess){
System.out.println("direct.queue1"+mess);
}
@RabbitListener(bindings = @QueueBinding(
value = @Queue("direct.queue2"),
exchange = @Exchange(value = "direct",type = ExchangeTypes.DIRECT),
key = {"red","yellow"}
))
public void listenDirectQueue2(String mess){
System.out.println("direct.queue2"+mess);
}
@RabbitListener(bindings = @QueueBinding(
value = @Queue("topic.queue1"), //队列
exchange = @Exchange(value = "topic",type = ExchangeTypes.TOPIC), //交换机
key = "china.#" //key #表示通配符
))
public void listenTopicQueue1(String mess){
System.out.println("topic.queue1"+mess);
}
}
2.运行程序注册主题模式交换机以队列
绑定关系
3.publisher测试类发布消息
@Test
public void topicTest(){
//交换机名字
String exchangeName="topic";
//消息
String mess="中国天气现在真好";
rabbitTemplate.convertAndSend(exchangeName,"china.xx",mess);
}
结果: