zoukankan      html  css  js  c++  java
  • 消息队列的一些概念

    用过哪些消息队列组件、消息队列有哪些基本概念、消息队列的作用、你使用消息队列使用场景、什么是AMQP、怎么保证消息的可靠性

    用过哪些消息队列组件:

    用过rabbitmq

    基本概念:

    producer:消息生产者

    consumer:消息消费者

    channel:信道,基于connection创建

    exchange(交换机):交换机接收消息,根据路由键转发消息到绑定的队列

    Broker:消息队列服务器实体

    message消息:每个消息都有一个路由键属性

    Connection:程序和broker的链接

    binding绑定:一个绑定就是基于路由键将交换机和队列链接起来的路由规则,所以交换机就是一个由绑定构成的路由表。

    queue队列:消息的容器,是rabbitmq内部,用于存储消息;消费者通过订阅队列来获取消息,生产者通过交换机最终把消息投递到队列。消费者可以从 Queue 中获取消息并消费;多个消费者可以订阅同一个 Queue,这时 Queue 中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。

    routing key 路由键:消息发送给交换机时,消息拥有一个路由键,交换机根据路由键发送到匹配的队列

    binding key 绑定键:

    交换机的三种常用类型:

    Direct:完全匹配

    Topic:模式匹配。根据通配符规则。*匹配一个单词,#匹配0个或者多个单词,路径之间用.隔开

    Fanout:忽略匹配 把所有发送到该 Exchange 的消息路由到所有与它绑定 的Queue 中。

    消息队列的作用

    业务之间的解耦和代码的解耦

    异步处理:消息发出去,有订阅方处理,不影响当前流程的速度和逻辑

    限流削峰:例如秒杀等活动,把集中的流量摊平

    使用的场景:

    例如用户下单,发个消息出去,消息的参数有订单id,使用的优惠券id

    等信息。如果使用了优惠券就可以通过消息修改用户的优惠券状态,改为已使用,以及其他操作。

    再例如:。。。

    什么是AMQP:

    AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议。

    工作过程

    发布者(Publisher)发布消息(Message),经由交换机(Exchange)。

    交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。

    最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。

    交换机类型:Direct、Fanout、Topic、Header

  • 相关阅读:
    spring 自定义事件发布及监听(简单实例)
    解析spring中的BeanFactory(看完会有收获)
    如何提高锁的性能
    spring MVC模式拦截所有入口方法的入参出参打印
    java基于feemarker 生成word文档(超级简单)
    数据库事务特性汇总
    如何让window.open()以post请求方式调用(巧妙解法)
    a标签添加背景图片的解决办法
    深入理解Django Admin的list_display, list_filter和raw_id_fields,filter_horizontal选项
    django配置log日志
  • 原文地址:https://www.cnblogs.com/dayang12525/p/13598018.html
Copyright © 2011-2022 走看看