RabbitMQ Java代码声明队列和交换机(方法二)

发布时间 2023-12-02 21:44:35作者: 嘎嘎鸭2

 

代码示例:创建一个Direct交换机,与两个队列绑定(direct.queue1、direct.queue2)

既是消费者,又可以创建交换机和队列,以及交换机与队列的 RoutingKey

@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "direct.queue1", durable = "true"),//队列(durable参数:队列要不要持久化)
exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),//交换机
key = {"red", "blue"} //RoutingKey 可以写多个,也可以写一个(key = "red")
))
public void listenQueue03(String msg) {
System.out.println("消费者收到了direct.queue1的消息:" + msg);
}
----------------------------------------------------------------------------------------------------------------
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "direct.queue2", durable = "true"),//队列(durable参数:队列要不要持久化)
exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),//交换机
key = {"red", "yellow"} //RoutingKey 可以写多个,也可以写一个(key = "red")
))
public void listenQueue04(String msg) {
System.out.println("消费者收到了direct.queue2的消息:" + msg);
}

创建结果:

 发送者给刚刚创建的 hmall.direct 交换机发消息:

@GetMapping("/mq03")
public void mq03(){
String exchangeName = "hmall.direct";
String msg = "hello, 红色";
//三个参数:交换机名称、RoutingKey、要发送的消息
rabbitTemplate.convertAndSend(exchangeName, "red", msg);
}

因为 RoutingKey 为 red,两个队列都有 red,所以两个队列都能收到来自 hmall.direct 交换机的消息