共计 2014 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章主要为大家展示了“消息代理 RabbitMQ 框架的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“消息代理 RabbitMQ 框架的示例分析”这篇文章吧。
消息代理 RabbitMQ 框架消息代理中间件
目前在市面上有许多消息代理中间件(下面简称为消息代理),例如 ActiveMQ、RabbitMQ、Kafka 等,在使用这些框架时,我们需要调用它们的 API,用来发送、接收消息,大概的结构请见图 8 -1。
图 8 -1 消息代理
消息代理主要用于接收和转发消息,可以把它看作邮局,消息生产者看作是寄件人,消息消费者是收件人,我们将一信件放到邮箱中,邮递员最终会把信件送达给收件人,RabbitMQ 等框架,就是进行着邮箱、邮递员和邮局的工作,但它们处理的不是信件,而是“消息”。
String Cloud Sream 在生产者和消费者之间,加多了一个类似代理的角色,它直接与消息代理(邮局)进行交互,消息生产者(寄件人)与消息消费者(收件人)不再需要直接调用各个消息代理框架的 API,它们甚至感觉不到消息代理的存在。类似于图 8 - 2 的结构。
图 8 -2 使用了 Spring Cloud Stream 后的结构
使用了 Stream 框架后,消息的生产者和消费者可以更加专注于各自的业务,至于消息(信件)是如何投递,使用的是哪个消息代理(邮局),它们无须关心。
目前,Spring Cloud Stream 的绑定器,提供了 RabbitMQ 与 Kafka 两个消息代理中间件的实现,接下来,我们先简单了解下 RabbitMQ 与 Kafka 框架。
RabbitMQ 和 AMQP
RabbitMQ 是一个轻量级的消息代理中间件,它支持多种消息通信协议,支持分布式部署,同时也支持运行于多个操作系统,灵活、高可用等特性,使 RabbitMQ 广受欢迎。
RabbitMQ 支持多种协议,其中最为重要的,是高级消息队列协议(AMQP),AMQP 是“Advanced Message Queuing Protocol”的缩写,它定义了“消息客户端”与“消息代理中间件”之间的通信协议。基于该协议,消息客户端与消息代理中间件,就可以不受开发语言、具体产品的约束。在学习使用 RabbitMQ 前,先对 AMQP 的模型作一个简单的了解。
前一小节中,消息生产者会向消息代理投递消息,消息代理会再发送给消息消费者,现在对消息代理作进一步的细化,AMQP 的大致模型,请见图 8 -3。
图 8 -3 AMQP 模型
在图 8 - 3 中,生产者会将消息投递给“消息代理(RabbitMQ 服务器)”,它们之间会建立消息通道(Channel),消息由交换器(Exchange)先进行处理,交换器会选择把消息交给哪一个队列(Message Queue),最后消息队列会将消息发给消费者。接下来,先下载和运行 RabbitMQ 的服务器。
下载与运行
本章所使用的 RabbitMQ 服务器版本为 3.6.11(Windows),由于 RabbitMQ 服务器使用的是 Erlang 语言,因此还要下载 Erlang,本章所使用的 Erlang 版本为 20.0(64 位),下载了 Erlang 后,会得到 otp_win64_20.0.exe 这样的安装文件,安装文件可以在本书的 /soft 目录中找到,笔者已经为大家下载了 32 位和 64 位的安装程序。
如果在 Windows 64 位的系统中安装 32 位的 Erlang,在使用 RabbitMQ 时会出现异常。
依次安装完 Erlang 和 RabbitMQ 后,RabbitMQ 会作为 Windows 服务启动。通过 Windows 命令行进入“C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.11\sbin”,输入:“rabbitmq-plugins list”查看当前 RabbitMQ 的插件状态,为了能使用 RabbitMQ 的控制台,输入“rabbitmq-plugins enable rabbitmq_management”开启管理插件,正常情况下会输出以下的信息:
Applying plugin configuration to rabbit@AY-PC... nothing to do.
打开浏览器,访问以下地址:http://localhost:15672,可以看到 RabbitMQ 的登录界面,默认的用户名和密码均为“guest”,登录以后主界面如图 8 - 4 所示。
图 8 -4 RabbitMQ 主界面
此时,RabbitMQ 的服务器已经成功运行,该服务器就是一个消息代理中间件。接下来,我们可以编写消息的生产者与消费者,使用 RabbitMQ 的 API 进行消息的测试。
以上是“消息代理 RabbitMQ 框架的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!