第三个模型是广播模型,这个模型里面就要使用交换机了,

生产者

    @Test
    void testFanout() {
   
//使用rabbitmq直接往队列里面放数据
// convertAndSend()第一个参数 是
        rabbitTemplate.convertAndSend("logs","","Fanout 模型里面发送的消息");
    }

消费者

    @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);
    }
}

生产者在交换机里面发送了消息,发送者的第一个参数就是交换机。

既然在交换机里面已经接受到了消息

现在使用广播的形式在消费端进行接收消息,因为交换机和队列需要绑定,所以,我们在消费端可以直接使用绑定的注解,将队列和交换机进行绑定。注解就是如下的这种情况

   @RabbitListener(bindings = {
   
            @QueueBinding(
                    value = @Queue,  //创建临时队列
                    exchange = @Exchange(value = "logs",type = "fanout")  //绑定的交换机
            )
    })

现在我们创建多个消费者,那么多个消费者都会接受到消息,因为这个是广播的模型