疯狂Spring Cloud连载(26)消息代理RabbitMQ框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boxiong86/article/details/78725545

 本文节选自《疯狂Spring Cloud微服务架构实战》

京东购买地址:https://item.jd.com/12256011.html

当当网购买地址:http://product.dangdang.com/25201393.html

Spring Cloud教学视频http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud电子书http://blog.csdn.net/boxiong86/article/details/78488226

 

消息代理RabbitMQ框架

本小节将对RabbitMQ作一个简单的介绍,了解RabbitMQ的作用,掌握基本的概念即可

消息代理中间件

目前在市面上有许多消息代理中间件(下面简称为消息代理),例如ActiveMQRabbitMQKafka等,在使用这些框架时,我们需要调用它们的API,用来发送、接收消息,大概的结构请见图8-1


8-1消息代理

消息代理主要用于接收和转发消息,可以把它看作邮局,消息生产者看作是寄件人,消息消费者是收件人,我们将一信件放到邮箱中,邮递员最终会把信件送达给收件人,RabbitMQ等框架,就是进行着邮箱、邮递员和邮局的工作,但它们处理的不是信件,而是“消息”。

String Cloud Sream在生产者和消费者之间,加多了一个类似代理的角色,它直接与消息代理(邮局)进行交互,消息生产者(寄件人)与消息消费者(收件人)不再需要直接调用各个消息代理框架的API,它们甚至感觉不到消息代理的存在。类似于图8-2的结构。


8-2使用了Spring Cloud Stream后的结构

使用了Stream框架后,消息的生产者和消费者可以更加专注于各自的业务,至于消息(信件)是如何投递,使用的是哪个消息代理(邮局),它们无须关心。

目前,Spring Cloud Stream的绑定器,提供了RabbitMQKafka两个消息代理中间件的实现,接下来,我们先简单了解下RabbitMQKafka框架

RabbitMQAMQP

RabbitMQ是一个轻量级的消息代理中间件,它支持多种消息通信协议支持分布式部署,同时也支持运行于多个操作系统,灵活、高可用等特性,使RabbitMQ广受欢迎。

RabbitMQ支持多种协议,其中最为重要的,是高级消息队列协议(AMQPAMQP是“Advanced Message Queuing Protocol”的缩写,定义了“消息客户端”与“消息代理中间件”之间的通信协议。基于该协议,消息客户端与消息代理中间件,就可以不受开发语言、具体产品的约束。在学习使用RabbitMQ前,先对AMQP的模型作一个简单的了解。

前一小节中,消息生产者会向消息代理投递消息,消息代理会再发送给消息消费者,现在对消息代理进一步的细化,AMQP的大模型,请见图8-3


8-3 AMQP模型

在图8-3中,生产者会将消息投递给“消息代理(RabbitMQ服务器)”,它们之间会建立消息通道(Channel消息由交换器(Exchange进行处理,交换器会选择把消息交给哪一个队列(Message Queue),最后消息队列会将消息发给消费接下来,先下载和运行RabbitMQ的服务器。

下载与运行

本章所使用的RabbitMQ服务器版本为3.6.11Windows,由于RabbitMQ服务器使用的是Erlang语言,因此还要下载Erlang,本章所使用的Erlang版本为20.064位),下载了Erlang后,会得到otp_win64_20.0.exe这样的安装文件,安装文件可以在本书的/soft目录中找到,笔者已经为大家下载了32位和64位的安装程序。

如果在Windows64位的系统中安装32位的Erlang,在使用RabbitMQ时会出现异常。

依次安装完ErlangRabbitMQRabbitMQ会作为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的服务器已经成功运行,该服务器就是一个消息代理中间件。接下来,我们可以编写消息的生产者与消费者,使用RabbitMQAPI进行消息的测试

 本文节选自《疯狂Spring Cloud微服务架构实战》

Spring Cloud教学视频http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud电子书http://blog.csdn.net/boxiong86/article/details/78488226

本书代码共享地址:https://gitee.com/yangenxiong/SpringCloud

猜你喜欢

转载自blog.csdn.net/boxiong86/article/details/78725545