SpringAMQP交换机:Direct

DirectExchange会将接收到的消息根据规则路由到指定的Queue,因此称为路由模式

每一个Queue都与Exchange设置一个BindingKey,可以绑定多个

发布者发送消息时候,指定消息的RoutingKey

Exchange将消息路由到BindingKey和RoutingKey一致的队列

实现思路:

1.利用@RabbitListener声明exchange queue RoutingKey

@RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue1"),
            exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),
            key = {"red","blue"}
    ))
    public void listenDirectQueue1(String msg){
        System.err.println("1接收到direct.queue1:【"+msg+"】");
    }
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue2"),
            exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),
            key = {"red","yellow"}
    ))
    public void listenDirectQueue2(String msg){
        System.err.println("2接收到direct.queue2:【"+msg+"】");
    }

2.在consumer服务中,编写两个消费者方法,在listener中分别监听direct.queue1 和direct.queue2

3.在publisher中编写测试方法,向itcast.direct发送消息

@Test
    public void testSendDirctMessage(){
        String exchangeName = "itcast.direct";
        String message = "hello, blue";
        rabbitTemplate.convertAndSend(exchangeName,"blue", message);
    }

 

posted @ 2021-11-10 16:02  zuiAI0658  阅读(101)  评论(0)    收藏  举报