RabbitMQ安装和使用

       linux下安装配置rabbitMQ详细教程   https://blog.csdn.net/qq_22075041/article/details/78855708

      消息中间件 主要作用:     异步,解耦,削峰

      消息中间件 典型应用场景:

      1、跨系统的异步通信 例如人民银行二代支付系统,使用重量级消息队列 IBM MQ,异步,解耦,削峰都有体现。

      2、应用内的同步变成异步 秒杀:自己发送给自己

      3、基于Pub/Sub模型实现的事件驱动

      4、利用消息队列实现事务的最终一致性

 

         AMQP协议AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品、不同的开发语言等条件的限制。AMQP的实现有:RabbitMQ、OpenAMQ、Apache Qpid、Redhat Enterprise MRG、AMQP Infrastructure、Zyre等。

 

     RabbitMQ的特性 RabbitMQ使用Erlang语言编写,使用Mnesia数据库存储消息。

     (1)可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。

     (2)灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功 能,RabbitMQ 已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个 Exchange 绑定在 一起,也通过插件机制实现自己的 Exchange 。

     (3)消息集群(Clustering) 多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker 。

     (4)高可用(Highly Available Queues) 队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。

     (5)多种协议(Multi-protocol) RabbitMQ 支持多种消息队列协议,比如 AMQP、STOMP、MQTT 等等。

     (6)多语言客户端(Many Clients) RabbitMQ 几乎支持所有常用语言,比如 Java、.NET、Ruby、PHP、C#、 JavaScript 等等。

     (7)管理界面(Management UI) RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点。

     (8)插件机制(Plugin System) RabbitMQ提供了许多插件,以实现从多方面扩展,当然也可以编写自己的插件。

     

       AMQP模型

       

         RabbitMQ模型

 

 

       死信队列 : 三种情况消息会进入DLX(Dead Letter Exchange)死信交换机。

       1、(NACK || Reject ) 消息&&关闭自动应答

       2、消息过期

       3、队列达到最大长度(先入队的消息会被发送到DLX)

       

     多个消费者监听一个队列时,消息如何分发

        1、Round-Robin(轮询)

              默认的策略,消费者轮流、平均地收到消息。

        2、Fair dispatch (公平分发)

              如果要实现根据消费者的处理能力来分发消息,给空闲的消费者发送更多消息,可以用basicQos(prefetch_count)来设置。prefetch_count的含义:当消费者有多少条消息没有响应ACK时,不再给这个消费者发送消息。 可以用作消费端限流。

posted @ 2019-06-23 10:19  Don'tYouSee  阅读(135)  评论(0编辑  收藏  举报