RabbitMQ基本使用

£神魔★判官ぃ 2024-04-07 11:36 163阅读 0赞

消息队列(MQ)
MQ全称Message Queue,是一种应用程序对应用程序的通信方式。应用程序通过读写出入队列的消息来通信,而无需专用连接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来进行通信(直接调用通常是用于诸如远程过程调用的技术)。

消息队列是典型的:生产者、消费者模型。 生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

就比如在一个电商项目中:

商品的原始数据保存在数据库中,增删改查都在数据库中完成。
搜索服务数据来源是索引库(Elasticsearch),如果数据库商品发生变化,索引库数据不能及时更新。
商品详情做了页面静态化处理,静态页面数据也不会随着数据库商品更新而变化。
如果我们在后台修改了商品的价格,就需要搜索页面和商品详情页也对商品价格进行修改。 当商品价格出现改动时,后台会向MQ发送一条消息(比如包含商品id的消息)。 搜索服务和静态页面服务监听MQ,接收消息,然后分别对索引库和静态页面进行更新。

在这个过程中商品服务只管发送消息,而不用关心消息被谁接收,搜索服务和静态页面服务接收消息,分别去处理索引库和静态页面。如果以后有其它系统也依赖商品服务的数据,同样监听消息即可,商品服务无需任何代码修改。

AMQP和JMS
MQ是消息通信的模型,并不是具体实现。现在实现MQ的有两种主流方式:AMQP、JMS。

AMQP( Advanced Message Queuing Protocol),是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的开放标准为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端中间件不同产品,不同的开发语言等条件的限制。Eang中的实现有 Rabbits等

JMS (Java Messageservice),是由Sun公司早期提出的消息标准,旨在为Java应用提供统一的消息操作,包括 create、send、 receive 等。JMS已经成为 java Enterprise Edition的一部分。从使用角度看,JMS和JDBC担任差不多的角色,用户都是根据相应的接口可以和实现了MS的服务进行通信,进行相关的操作。

两者间的区别和联系:

JMS是定义了统一的接口,来对消息操作进行统一;AMQP是通过规定协议来统一数据交互的格式
JMS限定了必须使用Java语言;AMQP只是协议,不规定实现方式,因此是跨语言的。
JMS规定了两种消息模型;而AMQP的消息模型更加丰富
RabbitMQ
RabbitMQ是基于AMQP协议,erlang语言开发的一款消息管理系统。其稳定性很好,支持主流的操作系统, Linux、 Windows、 Madox等。 同时支持多种开发语言:Java、 Python、 Ruby、NET、PHP、C/C++、 node js…
尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili

发表评论

表情:
评论列表 (有 0 条评论,163人围观)

还没有评论,来说两句吧...

相关阅读

    相关 RabbitMQ基本使用

    消息队列(MQ) MQ全称Message Queue,是一种应用程序对应用程序的通信方式。应用程序通过读写出入队列的消息来通信,而无需专用连接来连接它们。消息传递指的是程序

    相关 RabbitMQ基本使用

    MQ的应用场景 异步处理。比如注册,注册后会发送短信以及创建角色,这时候发送短信和创建角色可以异步进行,而不必等发送完短信之后再创建角色 流量削峰。若出现流量

    相关 rabbitmq基本使用

    现在微服务盛行, 我们通常会进行解耦, 这时候就需要异步的消息队列来帮助各个服务之间解耦 rabbitmq的基本概念介绍 rabbitmq的基本概念有消息produce