主要是将一个消息,分发到绑定了它的队列上,而这些队列如消费者
本身去创建和绑定!ui
生产者不须要关心消费者有多少,消费者若是须要这种消息,只须要把队列绑定到exchange上便可code
@Component public class AmqpConfig { public static final String LIND_FANOUT_EXCHANGE = "lindFanoutExchange"; /** * 广播交换机. * * @return */ @Bean public FanoutExchange fanoutExchange() { return new FanoutExchange(LIND_FANOUT_EXCHANGE); } }
生产者rabbitmq
/** * 发布广播消息. * * @param message . */ public void fanoutPublish(String message) { try { rabbitTemplate.convertAndSend(AmqpConfig.LIND_FANOUT_EXCHANGE, null, "广播消息"); } catch (Exception e) { e.printStackTrace(); } }
消费者队列
@Component public class FanoutSubscriber { @Autowired AmqpConfig amqpConfig; @Bean public Queue product1Queue() { return new Queue("product1.queue"); } @Bean public Queue product2Queue() { return new Queue("product2.queue"); } @Bean public Binding product1QueueBinding() { return BindingBuilder.bind(product1Queue()).to(amqpConfig.fanoutExchange()); } @Bean public Binding product2QueueBinding() { return BindingBuilder.bind(product2Queue()).to(amqpConfig.fanoutExchange()); } @RabbitListener(queues = "product1.queue") public void product1(String data) { System.out.println(data); } @RabbitListener(queues = "product2.queue") public void product2(String data) { System.out.println(data); } }