RabbitMQ 是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。它的并发最高可以支持一万并发,且它出身于金融行业。
Producer:生产者 Consumer:消费者 Broker:消息中间件的服务节点 。 Virtual Host:等同于namespace Channel:频道或信道,是建立在Connection连接之上的一种轻量级的连接。 RoutingKey:路由键。生产者将消息发给交换器的时候,一般会指定一个 RoutingKey,用来指定这个消息的路由规则。 Exchange:交换器,生产者将消息发送到 Exchange (交换器,通常也可以用大写的“X”来表示),由交换器将消息路由到一个或者多个队列中。如果路由不到,或返回给生产者,或直接丢弃。 Queue:队列,是RabbitMQ的内部对象,用于存储消息。 Binding:绑定,RabbitMQ 中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一个绑定键( BindingKey ) ,这样 RabbitMQ 就知道如何正确地将消息路由到队列了。
1、生产者连接到 RabbitMQ Broker,建立一个连接( Connection) ,开启一个信道 (Channel) 2、生产者声明一个交换器 ,并设置相关属性,比如 交换机类型、是否持久化等 3、生产者声明 一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等 4、生产者通过路由键将交换器和队列绑定起来 5、生产者发送消息至RabbitMQ Broker,其中包含路由键、交换器等信息 6、相应的交换器根据接收到的路由键查找相匹配的队列 7、如果找到,则将从生产者发送过来的消息存入相应的队列中 8、如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者 9、关闭信道、关闭连接
1、生产者连接到RabbitMQ Broker,建立一个连接( Connection) ,开启一个信道 (Channel) 2、消费者向RabbitMQ Broker 请求消费相应队列中的消息,可能会设置相应的回调函数,以及做一些准备工作 3、等待RabbitMQ Broker 回应并投递相应队列中的消息, 消费者接收消息 4、消费者确认 (ack) 接收到的消息 5、RabbitMQ 从队列中删除相应己经被确认的消息 6、关闭信道、关闭连接
开源,可靠性,高可用,多语言客户端,灵活的路由,插件机制,管理界面,消息集群,多种协议,跟踪机制,文档丰富
下面对上述重要的特点进行展开讲述
1.ack机制(推荐) 2.channel事务(不推荐) 3.重发机制 4.支持持久化 5.死信队列(1.消息过期,2.消息被拒绝,3.队列满了),说白了就是没有被消费的消息移到死信队列
rabbitmq支持集群部署,分为普通模式和镜像模式,普通模式不好用,最好用镜像模式
灵活体现在它的交换器Exchange RabbitMQ 常用的交换器类型有fanout、direct、topic、headers 这四种
插件丰富多样,且安装简单,比如rabbitmq的management管理插件
可以通过安装插件的方式,就可以拥有管理web页面。
不支持消息的顺序消费,除非所有消息都放到一个队列,只有一个消费者去消费才可以实现顺序消费
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。