紧接上一篇:https://blog.csdn.net/qq_36357242/article/details/107682005
本篇介绍发布订阅模式
发布订阅模式
发布/订阅模式是指同时向多个消费者发送消息的模式(类似广播的形式),它包含一个生产者、两个消费者、两个队列和一个交换机。两个消费者同时绑定到不同的队列上去,两个队列绑定到交换机上去,生产者通过发送消息到交换机,所有消费者接收并消费消息。
声明交换机和队列
//申明俩个发布订阅模式的交换机
@Bean
public FanoutExchange fanout() {
return new FanoutExchange("exchange.fanout");
}
//申明俩个发布订阅模式队列
@Bean
public Queue fanoutQueue1() {
return new Queue("fanout1");//队列一
}
@Bean
public Queue fanoutQueue2() {
return new Queue("fanout2");//队列二
}
//将队列一绑定到交换机
@Bean
public Binding fanoutBinding1(FanoutExchange fanout, Queue fanoutQueue1) {
return BindingBuilder.bind(fanoutQueue1).to(fanout);
}
//将队列二绑定到交换机
@Bean
public Binding fanoutBinding2(FanoutExchange fanout, Queue fanoutQueue2) {
return BindingBuilder.bind(fanoutQueue2).to(fanout);
}
创建生产者(发送者)
//创建消息发送者
public void sendToFanout() {
String context = "发布订阅模式发送的消息";
System.out.println("发布订阅模式发送者: " + context);
this.rabbitTemplate.convertAndSend("exchange.fanout", "",context);
}
创建消费者(接收者)
@RabbitListener(queues = "fanout1")
@RabbitHandler
public void process4(String fanout) {
System.out.println("发布订阅模式 消费者1: " + fanout);
}
@RabbitListener(queues = "fanout2")
@RabbitHandler
public void process5(String fanout) {
System.out.println("发布订阅模式 消费者2: " + fanout);
}
运行
@Test
public void contextLoads3() {
for (int i = 0;i<10; i++){
senderConfig.sendToFanout();
}
}