RabbitMQ第四个实操小案例——DirectExchange-创新互联

文章目录
  • RabbitMQ第四个实操小案例——DirectExchange

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站设计、外贸网站建设、察隅网络推广、微信小程序定制开发、察隅网络营销、察隅企业策划、察隅品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供察隅建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.comRabbitMQ第四个实操小案例——DirectExchange

DirectExchange:这种交换机的模式跟前面的Fouout(广播)不太一样,DirectExchange 会将接收到的消息根据规则路由到指定的Queue,因此也被称之为 路由模式(routes)。

他的模型如下所示:
在这里插入图片描述
我们先说一下上面这个图吧:

  • 每一个Queue都与Exchange绑定一个或多个bingingKey。(上面queue1与exchange绑定的bindingKey有red和blue,queue2与exchange绑定的bindingKey有red和yellow。)
  • Publisher发送消息时,指定消息的bindingKey。
  • Exchange根据消息的bindingKey,将消息转发到对应的Queue。
    • 假如现在发送的消息的bindingKey为blue,那么消息将被queue1接收。
    • 假如现在发送的消息的bindingKey为yellow,那么消息将被queue2接收。
    • 假如现在发送的消息的bindingKey为red,那么消息将被queue1和queue2同时接收。

OK,废话少说,老规矩,咱们代码来一波:
实现思路:

步骤一、配置我们的配置类。
步骤二、在Consumer服务中,编写两个消费者方法,分别监听direct.queue1和direct.queue2。
步骤三、在Publisher服务中,编写测试方法,向交换机exchange.direct发送消息。

步骤一、使用我们的@RabbitListener注解声明我们的Exchange、Queue、RoutingKey,编写两个消费者方法。

@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "direct.queue1"),
        exchange = @Exchange(name = "exchange.direct", type = ExchangeTypes.DIRECT),
        key = {"red", "blue"}
))
public void listenerDirectQueue1(String msg){System.out.println("监听到 direct.queue1 的消息为:【"+ msg +"】");
}

@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "direct.queue2"),
        exchange = @Exchange(name = "exchange.direct", type = ExchangeTypes.DIRECT),
        key = {"red", "yellow"}
))
public void listenerDirectQueue2(String msg){System.err.println("监听到 direct.queue2 的消息为:【"+ msg +"】");
}

编写完代码,我们重启一下我们的消费者服务,然后我们看一下我们的RabbitMQ。可以看到,此时我们的交换机中,绑定的有两个queue,其中queue1监听的RoutingKey有blue和red、queue2监听的RoutingKey有yellow和red。
在这里插入图片描述
我们也可以看看我们的queue,确实也多了俩,一个叫direct.queue1,一个叫direct.queue2。
在这里插入图片描述

步骤二、在Publisher服务中,编写测试方法,向交换机exchange.direct发送消息。

@Test
    public void testDirectExchange(){//交换机的名称
        String exchangeName = "exchange.direct";
        //消息
        String blueMsg = "Hello, Blue.";
        String redMsg = "Hello, Red.";
        String yellowMsg = "Hello, Yellow.";
        //发送消息
        for (int i = 0; i< 10; i++){if (i % 3 == 0){rabbitTemplate.convertAndSend(exchangeName, "blue", blueMsg);
            }else if (i % 3 == 1){rabbitTemplate.convertAndSend(exchangeName, "yellow", yellowMsg);
            }else {rabbitTemplate.convertAndSend(exchangeName, "red", redMsg);
            }
        }
    }

运行我们的测试方法后,我们看一下Consumer服务的控制台打印消息:
在这里插入图片描述
可以看到,direct.queue1 监听到的消息有 Hello, Red 和 Hello, Blue,而direct.queue2 监听到的消息有 Hello, Red 和 Hello, Yellow.

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

分享标题:RabbitMQ第四个实操小案例——DirectExchange-创新互联
转载注明:https://www.cdcxhl.com/article28/deiocp.html

成都网站建设公司_创新互联,为您提供营销型网站建设搜索引擎优化动态网站外贸建站网站维护定制网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设