主要是將一個消息,分發到綁定了它的隊列上,而這些隊列如消費者
本身去創建和綁定!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); } }