zoukankan      html  css  js  c++  java
  • RabbitMQ

    https://www.cnblogs.com/coder-programming/p/12465314.html

    消息队列中间件主要解决应用耦合,异步消息, 流量削锋等问题。

    常用消息队列系统:目前在生产环境,使用较多的消息队列有 ActiveMQ、RabbitMQ、 ZeroMQ、Kafka、MetaMQ、RocketMQ 等。

    五种模式:

      1.简单队列------------一个生产者对应一个消费者

      2.work模式---------一个生产者对应多个消费者,但是一条消息只能有一个消费者获得消息!!!

      3.发布、订阅模式-----------一个消费者将消息首先发送到交换器,交换器绑定到多个队列,然后被监听该队列的消费者所接收并消费。

      4.路由模式 ---------生产者将消息发送到direct交换器,在绑定队列和交换器的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列,

              接着监听该队列的消费者消费消息。 也就是让消费者有选择性的接收消息。

      5.主题模式----上面的路由模式是根据路由key进行完整的匹配(完全相等才发送消息),这里的通配符模式通俗的来讲就是模糊匹配。

             符号“#”表示匹配一个或多个词,符号“*”表示匹配一个词。

    6.工作模式总结

    ​ 这五种工作模式,可以归为三类:

    1. 生产者,消息队列,一个消费者;
    2. 生产者,消息队列,多个消费者;
    3. 生产者,交换机,多个消息队列,多个消费者;

    7、四种交换器

      1、direct 如果路由键完全匹配的话,消息才会被投放到相应的队列。  

      2、fanout 当发送一条消息到fanout交换器上时,它会把消息投放到所有附加在此交换器上的队列。

      3、topic 设置模糊的绑定方式,“*”操作符将“.”视为分隔符,匹配单个字符;“#”操作符没有分块的概念,它将任意“.”均视为关键字的匹配部分,能够匹配多个字符。

    ​       4、header headers 交换器允许匹配 AMQP 消息的 header 而非路由键,除此之外,header 交换器和 direct 交换器完全一致,但是性能却差很多,因此基本上不会用到该交换器

    解耦:

    用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,这时可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用 MQ ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到 MQ 让主流程快速完结,而由另外的单独线程拉取MQ的消息(或者由 MQ 推送消息),当发现 MQ 中有发红包或发短信之类的消息时,执行相应的业务逻辑。
     
    削峰:
    秒杀场景-------要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。
  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/chdchd/p/13066265.html
Copyright © 2011-2022 走看看