美文网首页springboot-rabbitmq
springboot-rabbitmq之路由(四)

springboot-rabbitmq之路由(四)

作者: 前进的码农 | 来源:发表于2020-11-12 10:31 被阅读0次

概念

image.png

实现

根据图我们看出路由的的类型为direct
实现步骤为:
生产者->声明路由(direct)->声明2个队列- >路由分别绑定这2个队列并分别绑定routingkey->发送带routingkey的消息
消费者->监听这2个队列的消息

生产者实现

声明路由注意类型

    //声明路由注意路由的类型为direct
    @Bean
    Exchange exchange(){
        return ExchangeBuilder.directExchange("ethan.exchange_routing").build();
    }

声明队列

    //声明队列
    @Bean("queue")
    Queue queue(){
        return QueueBuilder.durable("queue_routing").build();
    }
    //声明队列1
    @Bean("queue01")
    Queue queue01(){
        return QueueBuilder.durable("queue_routing_01").build();
    }

路由绑定队列这里我们一个队列设置routingkey为error另外一个设置一个error一个info

    //绑定队列1到路由并设置routingkey为routing_inforouting_error
    @Bean
    Binding binding01(@Qualifier("queue01") Queue queue,
                    Exchange exchange){
        return BindingBuilder.bind(queue).to(exchange).with("routing_error").noargs();
    }
    //绑定队列1到路由并设置routingkey为routing_info
    @Bean
    Binding binding02(@Qualifier("queue01") Queue queue,
                      Exchange exchange){
        return BindingBuilder.bind(queue).to(exchange).with("routing_info").noargs();
    }

发送一个error消息一个info消息

    @Autowired
    MyBean myBean;
    @Test
    void test(){

        myBean.getAmqpTemplate().convertAndSend("ethan.exchange_routing","routing_error","error-----");
        myBean.getAmqpTemplate().convertAndSend("ethan.exchange_routing","routing_info","info------");
    }

期望达到的结果为发送到error的routingkey2个队列都能收到消息,发送带info的只有一个队列可以收到消息

消费者

@Component
@Slf4j
public class ReceiverBean {
    @RabbitListener(queues = "queue_routing")
    public void processMessage(String msg) {
        log.info("queue_routing---"+msg);
    }
    @RabbitListener(queues = "queue_routing_01")
    public void processMessage01(String msg) {
        log.info("queue_routing_01---"+msg);
    }
}

运行效果

image.png

可以看出运行效果和期待的一样

代码

生产端
https://gitee.com/ethanlab/rabbitmq/tree/master/rabbit-routing-producer
消费端
https://gitee.com/ethanlab/rabbitmq/tree/master/rabbit-routing-consumer

相关文章

  • springboot-rabbitmq之路由(四)

    概念 实现 根据图我们看出路由的的类型为direct实现步骤为:生产者->声明路由(direct)->声明2个队列...

  • springboot-rabbitmq之订阅/发布(三)

    概念 fanout模式下routing_key是被忽略的 实现 根据图,我们新建一个生产者,声明一个路由,2个队列...

  • springboot-rabbitmq之hello-world(

    概念介绍 这里引用rabbit官网的一张图 大概意思就是生产者把消息发送到队列然后消费者消费消息 springbo...

  • 八、Flutter路由

    目录一、基本路由二、基本路由传参三、命名路由四、命名路由传参五、替换路由六、返回到根路由 一、基本路由 跳转到De...

  • 05Vue的前端路由

    Vue的前端路由 一 路由基本概念 路由的本质就是对应关系。 路由可分为: 后端路由:URL请求地址与服务器资源之...

  • Vue路由

    一、Vue路由基础用法: 二、Vue路由配置的抽出 三、路由动态传值: 四、路由的跳转方式: 五、路由的hash模...

  • springboot-rabbitmq之延迟队列实现(六)

    概念介绍 延迟队列 生产者发送消息后,消费者根据设定的时间,延迟收到消息,rabbitmq默认不带延迟队列功能,我...

  • springboot-rabbitmq之工作队列(二)

    概念 老样子还是先上图 生产者p 把消息发送到队列其实是先发送到默认的路由,如果有多个消费者消费的话,消息会按照轮...

  • veu传参几种方式

    1、query的方式 2、params的方式 配置路由: 动态路由子路由 vue路由跳转有四种方式 router-...

  • Vue路由/路由守卫

    一、前端路由和后端路由概念解释 二、路由的基本使用方式 三、常见引入路由组件的方式和区别 四、常见引入路由分类1....

网友评论

    本文标题:springboot-rabbitmq之路由(四)

    本文链接:https://www.haomeiwen.com/subject/rxxhbktx.html