这篇文章主要为大家展示了“消息代理RabbitMQ框架的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“消息代理RabbitMQ框架的示例分析”这篇文章吧。
成都创新互联公司长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为扶绥企业提供专业的网站设计制作、成都网站设计,扶绥网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
目前在市面上有许多消息代理中间件(下面简称为消息代理),例如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是一个轻量级的消息代理中间件,它支持多种消息通信协议,支持分布式部署,同时也支持运行于多个操作系统,灵活、高可用等特性,使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框架的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!