目录
部署demo项目
什么是Fanout交换机
实现Fanout交换机
1.控制台
声明队列
声明交换机
将交换机与队列绑定
2.编写消费者方法
3.编写生产者测试方法
部署demo项目
通过消息队列demo项目进行练习 相关配置看此贴 http://t.csdnimg.cn/hPk2T
注意 生产者消费者的yml文件也要配置好
什么是Fanout交换机
Fanout 交换机是 AMQP(高级消息队列协议)中的一种交换机类型,它将消息广播到所有与该交换机绑定的队列上。无论消息发送者将消息发送到哪个队列,所有绑定到该 Fanout 交换机的队列都会收到相同的消息副本。
Fanout 交换机常用于需要广播消息给多个消费者的场景,例如发布订阅模式中的订阅者通常会使用 Fanout 交换机来接收发布者发送的消息。在 RabbitMQ 中,Fanout 交换机是其中一种常见的交换机类型,提供了简单且有效的消息广播机制。
Fanout 交换机的特点包括:
- 广播消息:Fanout 交换机会将消息广播到所有与之绑定的队列,无视消息的路由键。
- 简单配置:不需要对消息进行路由规则匹配,只需将队列绑定到 Fanout 交换机即可。
- 适用广泛:适用于需要一次性将消息发送给多个消费者的场景,如日志广播、实时通知等。
实现Fanout交换机
1.控制台
声明队列
声明交换机
将交换机与队列绑定
2.编写消费者方法
package cn.itcast.mq.lintener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class MQListener {
@RabbitListener(queues = "fanout.queue1")
public void listenFanoutQueue1(String message) {
log.info("消费者1收到了消息:........... {}", message);
// System.out.println("消费者收到了消息: " + message);
}
@RabbitListener(queues = "fanout.queue2")
public void listenFanoutQueue2(String message) {
log.info("消费者2收到了消息: {}", message);
// System.out.println("消费者收到了消息: " + message);
}
}
3.编写生产者测试方法
package cn.itcast.mq.helloworld;
import org.apache.logging.log4j.message.Message;
import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.messaging.converter.StringMessageConverter;
@SpringBootTest
public class SpringAMQPTest {
@Autowired
private RabbitTemplate rabbitTemplate;
// fanout交换机
@Test
void testFanoutExchange(){
String exchangeName = "hmall.fanout";
String message = "hello, fanout 交换机";
rabbitTemplate.convertAndSend(exchangeName,"", message);
}
}
成功向两个消费者广播了同一条消息