RabbitMQ简介

RabbitMQ本身是一个消息队列,先介绍下消息队列。

什么是消息队列

        消息队列(Message Queue)是在消息的传输过程中保存消息的容器。消息队列提供了一种在应用之间异步通信的方法。这意味着发送者和接收者不需要同时处理消息。发送者可以将消息添加到队列中,然后继续处理其他任务,而不需要等待接收者收到并处理消息。
        当然,消息队列也提供了一种消息持久性的工具,即使处理消息的进程崩溃,消息也不会丢失,因为它存储在队列中,直到接收者明确的通知消息队列,该消息已被处理和删除。此外,消息队列也可以处理大流量的请求,通过消息队列作为缓冲,可以平衡系统的处理负载。一些常见的消息队列软件有RabbitMQ、Kafka等。

为什么使用消息队列

  1. 解耦:在系统设计中,各个微服务之间通过消息队列进行通信,可以减少直接的依赖关系,使各个微服务能够独立开发和部署。

  2. 异步性:消息队列提供了异步处理机制,可以将非即时性的任务(比如发送短信,发送邮件等等)放入消息队列,提高系统的响应速度。

  3. 削峰填谷:在高并发的业务情况下,直接让所有请求打到服务器上可能会让服务器崩溃,通过消息队列可以平滑处理这些请求,达到削峰填谷的效果。

  4. 可恢复性:当处理消息的任务失败时,可以将消息再次放回队列中,等待再次处理。

  5. 顺序保证:在大多数消息队列中,消息是按到达顺序处理的。这对于需要保证顺序的操作非常有用。

  6. 缓冲:可以将消息队列用作缓冲区,处理来自其他服务的数据,以便在需要时使用。

  7. 扩展性:添加到队列中的工作项可以由任何数量的接收者处理,允许动态增加处理资源来处理队列中的工作负载。

  8. 数据安全:大部分消息队列提供了数据持久化的功能,即使系统崩溃,数据也不会丢失。

RabbitMQ与ActiveMQ对比

RabbitMQActiveMQ
消息模型RabbitMQ的核心概念是 "exchanges" 和 "bindings"。生产者将消息发送到exchange,然后exchange根据规则将消息路由到一个或多个队列。这种模型提供了非常灵活的路由规则。ActiveMQ的模型相对要简单些,有两种模式:队列模式和主题模式。前者是点对点的模型,后者是发布/订阅的模型。
消息协议RabbitMQ最初是实现AMQP(高级消息队列协议)的,后来也支持STOMP, MQTT和HTTP等其他协议。ActiveMQ主要支持JMS(Java消息服务)协议,也支持STOMP和AMQP。
可靠性RabbitMQ和ActiveMQ都提供了消息持久化、消息确认、高可用(集群)等机制来确保消息的可靠性。
性能RabbitMQ和ActiveMQ的性能都非常优秀,具有很高的吞吐量和低延迟。但在大多数常见的使用场景下,RabbitMQ的性能通常可能会优于ActiveMQ。
社区支持RabbitMQ由Pivotal(Spring的母公司)支持,社区活跃,更新迭代频繁。ActiveMQ是Apache的项目,社区也相对活跃,但近几年更新迭代不如RabbitMQ频繁。
语言支持RabbitMQ客户端支持多种语言,如Java,.NET,Erlang等。ActiveMQ主要面向Java语言,但也有.NET,python等语言的客户端。
易用性RabbitMQ的安装和配置相对简单,管理界面友好,方便进行操作和监控。ActiveMQ的配置相对较为复杂,但提供了JMX来进行远程管理和监控。

总体来说,RabbitMQ更强大和灵活。

RabbitMQ的组成部分

  • Broker:消息队列服务进程。此进程包括两个部分:Exchange和Queue。
  • Exchange:消息队列交换机。按一定的规则将消息路由转发到某个队列
  • Queue:消息队列,存储消息的队列。
  • Producer:消息生产者。生产方客户端将消息同交换机路由发送到队列中。
  • Consumer:消息消费者。消费队列中存储的消息。

RabbitMQ的工作流程

  • 消息生产者连接到RabbitMQ Broker,创建connection,开启channel。
  • 生产者声明交换机类型、名称、是否持久化等。
  • 生产者发送消息,并指定消息是否持久化等属性和routing key。
  • exchange收到消息之后,根据routing key路由到跟当前交换机绑定的相匹配的队列里面。
  • 消费者监听接收到消息之后开始业务处理。

参考:

超详细的RabbitMQ入门,看这篇就够了!-阿里云开发者社区 (aliyun.com) (基本都是这里的内容,文本为个人学习笔记,所以Ctrl+C、V的比较多,大佬们勿喷)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值