| RabbitMQ简介 |
| 以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过程要等到调用完毕之后才能返回下单成功,如果网络产生波动等原因使得商品服务扣库存延迟或者失败,会带来较差的用户体验,如果在高并发的场景下,这样的处理显然是不合适的,那怎么进行优化呢?这就需要消息队列登场了。 |
| |
| 消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处理网络通信,如果网络连接不可用,消息被暂存于队列当中,当网络畅通的时候在将消息转发给相应的应用程序或者服务,当然前提是这些服务订阅了该队列。如果在商品服务和订单服务之间使用消息中间件,既可以提高并发量,又降低服务之间的耦合度。 |

| RabbitMQ就是这样一款我们苦苦追寻的消息队列。RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。 |
| |
| RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在。可谓“人如其名”,RabbitMQ像兔子一样迅速。 |
| |
| |
| |
| RabbitMQ除了像兔子一样跑的很快以外,还有这些特点: |
| |
| 开源、性能优秀,稳定性保障 |
| 提供可靠性消息投递模式、返回模式 |
| 与Spring AMQP完美整合,API丰富 |
| 集群模式丰富,表达式配置,HA模式,镜像队列模型 |
| 保证数据不丢失的前提做到高可靠性、可用性 |
| MQ典型应用场景: |
| |
| 异步处理。把消息放入消息中间件中,等到需要的时候再去处理。 |
| 流量削峰。例如秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使得系统不会因为超负载而崩溃。 |
| 日志处理 |
| 应用解耦。假设某个服务A需要给许多个服务(B、C、D)发送消息,当某个服务(例如B)不需要发送消息了,服务A需要改代码再次部署;当新加入一个服务(服务E)需要服务A的消息的时候,也需要改代码重新部署;另外服务A也要考虑其他服务挂掉,没有收到消息怎么办?要不要重新发送呢?是不是很麻烦,使用MQ发布订阅模式,服务A只生产消息发送到MQ,B、C、D从MQ中读取消息,需要A的消息就订阅,不需要了就取消订阅,服务A不再操心其他的事情,使用这种方式可以降低服务或者系统之间的耦合。 |
| |
| 单机部署 |
| 下载 |
| [root@localhost opt] |
| |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost wxWidgets-3.1.7] |
| [root@localhost wxWidgets-3.1.7] |
| [root@localhost bin] |
| |
| |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost otp_src_23.2] |
| [root@localhost otp_src_23.2] |
| |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| |
| export PATH=$PATH:/usr/local/rabbitmq/bin |
| |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| |
| |
| |
| rabbitmq地址 |
| 192.168.1.238:25672 |
| 192.168.1.238:15672 (web) |
| |
| 用户:admin |
| 密码:admin |
| |
| |
| 主要端口说明 |
| 5672 --client端通信口 |
| |
| 15672 -- 管理界面ui端口 |
| |
| 25672 -- server间内部通信口 |
| |
| 访问RabbitMQ管理界面可以访问如下: |
| |
| http://IP:15672/ |
| |
| 连接RabbitMQ的话就要用client端通信口: |
| |
| server: amqp://guest:guest@localhost:5672/ |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示