配置类方式:
定义队列和交换机
@Configuration public class RabbitConfig { //队列一 @Bean public Queue fanoutQueue1(){ return new Queue("fanout.queue1"); } //队列二 @Bean public Queue fanoutQueue2(){ return new Queue("fanout.queue2"); } //Fanout交换机 @Bean public FanoutExchange itcastFanout(){ return new FanoutExchange("itcastFanout"); } //队列fanoutQueue1绑定交换机itcastFanout @Bean public Binding queue1Exchange(Queue fanoutQueue1, FanoutExchange itcastFanout){ return BindingBuilder.bind(fanoutQueue1).to(itcastFanout); } //队列fanoutQueue2绑定交换机itcastFanout @Bean public Binding queue2Exchange(Queue fanoutQueue2,FanoutExchange itcastFanout){ return BindingBuilder.bind(fanoutQueue2).to(itcastFanout); } }
监听
//============fanout================== @RabbitListener(queues = "itheima.fanout.queue1") public void fanConsumer(String message) throws InterruptedException { System.out.println(2222); Thread.sleep(5000); System.out.println("收到的消息fan1:"+message); } @RabbitListener(queues = "itheima.fanout.queue2") public void fanConsumer2(String message){ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("收到的消息fan2:"+message); }
注解方式:
直接创建交换机和队列以及监听
@RabbitListener(bindings = { @QueueBinding( value = @Queue(name="itheima.fanout.queue1",durable = "true"), exchange = @Exchange(name = "itcastFanout",type = ExchangeTypes.FANOUT) ) }) public void fanoutConsumer(String message){ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("itheima.fanout.queue1收到的消息:"+message); }