SpringBoot整合rabbitmq(四)

本文介绍了RabbitMQ中Topic类型的交换机如何使用RoutingKey和通配符进行消息路由。通过两个消费者示例,展示了如何配置队列以匹配不同的RoutingKey(如#.news和china.#)。生产者发送的china.news消息能同时被两个队列接收到,因为匹配了各自的绑定规则。
摘要由CSDN通过智能技术生成

          今天带来topic方式进行收发消息。Topic类型的ExchangeDirect相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符!

通配符规则:

#:匹配一个或多个词

*:匹配不多不少恰好1个词

接收消息并且声明队列和交换机:

 

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name="topic.queue2",durable = "false"),
            exchange = @Exchange(name = "topic.exchange",durable = "false",
            type = ExchangeTypes.TOPIC),
            key = "#.news"
    ))
    public void listenTopicQueue2(String msg){
        System.out.println("消费者接收到topic.queue2的消息:【" + msg + "】");
    }

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "topic.queue1",durable = "false"),
            exchange = @Exchange(name = "topic.exchange",durable = "false",
            type = ExchangeTypes.TOPIC),
            key = "china.#"
            ))
    public void listenTopicQueue1(String msg){
        System.out.println("消费者接收到topic.queue1的消息:【" + msg + "】");
    }

这里的声明还是两种方式,为了缩短篇幅,采用了基于注解的方式,

编写生产者代码:

    @GetMapping("/topic")
    public void sendMessageTopic(String msg) {

        rabbitTemplate.convertAndSend("topic.exchange","china.news",msg);
    }

用Postman进行测试。

得到结果:两个队列都收到了消息。(这里测试结果一直添加不上图片,以后有机会补上)

因为测试的时候发的消息和两个队列的routingkey都匹配,所以两个队列都收到了消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值