第三个模型是广播模型,这个模型里面就要使用交换机了,
生产者
代码语言:javascript复制 @Test
void testFanout() {
//使用rabbitmq直接往队列里面放数据
// convertAndSend()第一个参数 是
rabbitTemplate.convertAndSend("logs","","Fanout 模型里面发送的消息");
}
消费者
代码语言:javascript复制 @Component
public class FanoutCustomer {
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue, //创建临时队列
exchange = @Exchange(value = "logs",type = "fanout") //绑定的交换机
)
})
public void receivel(String message){
System.out.println("message1=" message);
}
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue, //创建临时队列
exchange = @Exchange(value = "logs",type = "fanout") //绑定的交换机
)
})
public void receive2(String message){
System.out.println("message2=" message);
}
}
生产者在交换机里面发送了消息,发送者的第一个参数就是交换机。
既然在交换机里面已经接受到了消息
现在使用广播的形式在消费端进行接收消息,因为交换机和队列需要绑定,所以,我们在消费端可以直接使用绑定的注解,将队列和交换机进行绑定。注解就是如下的这种情况
代码语言:javascript复制 @RabbitListener(bindings = {
@QueueBinding(
value = @Queue, //创建临时队列
exchange = @Exchange(value = "logs",type = "fanout") //绑定的交换机
)
})
现在我们创建多个消费者,那么多个消费者都会接受到消息,因为这个是广播的模型