Windows下RabbitMQ安装及注意事项

Windows下RabbitMQ安装及注意事项

简介

背景

1.      RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

2.     RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。(消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。)

扩展:AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全

场景

1、跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。

  2、多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传输,共享数据库,消息队列,远程过程调用都可以作为集成的方法。

  3、应用内的同步变异步,比如订单处理,就可以由前端应用将订单信息放到队列,后端应用从队列里依次获得消息处理,高峰时的大量订单可以积压在队列里慢慢处理掉。由于同步通常意味着阻塞,而大量线程的阻塞会降低计算机的性能。

  4、消息驱动的架构(EDA),系统分解为消息队列,和消息制造者和消息消费者,一个处理流程可以根据需要拆成多个阶段(Stage),阶段之间用队列连接起来,前一个阶段处理的结果放入队列,后一个阶段从队列中获取消息继续处理。

  5、应用需要更灵活的耦合方式,如发布订阅,比如可以指定路由规则。

  6、跨局域网,甚至跨城市的通讯(CDN行业),比如北京机房与广州机房的应用程序的通信。

准备工作

otp_win64_20.3.exe

rabbitmq-server-3.7.4.exe

安装过程

介绍了RabbitMQ背景和使用场景,那我们来实现一下:

首先 我们去官网下载一个rabbitmq,我用的是windows系统,以windows系统按住为例:

1.     打开http://www.rabbitmq.com/ 官网,进入Docs页面进入下载页面

2.     In This Section 这一块内容我们可以看到Install: Windows  我们点击进去可以看到有这样一句话

   

首先,您需要安装支持的 Windows 版Erlang。下载并运行Erlang for Windows 安装程序。强烈建议使用64位版本。重要说明:您必须使用管理帐户运行Erlang安装程序,否则RabbitMQ安装程序预期的注册表项将不存在。

然后,运行RabbitMQ安装程序rabbitmq-server-3.7.4.exe。它将RabbitMQ安装为Windows服务并使用默认配置启动它。

3.     所以我们在安装rabbitmq需要安装一个Erlang 官网地址:http://www.erlang.org/downloads

4.     安装otp_win64_20.3.exe 双击.exe文件进行安装就好,直接下一步完成就好。

5.     然后安装rabbitmq-server-3.7.4.exe双击.exe文件进行安装就好,直接下一步完成就好。

6.     输入:rabbitmq-plugins enablerabbitmq_management命令,出现plugins安装成功的提示。

7.     安装完成后  打开http://localhost:15672 可以看到

输入账号/密码:guest/ guest后进入

注意事项

当然,上面的安装过程是一个理想中的状态,我在安装过程中没有那么顺利,遇到各种错啊,心态差点崩掉!!!

问题一:

先上图

我们可以看到遇到这个错误 (ArgumentError)argument error (stdlib) io_lib.erl:170: :io_lib.format(' * effective user\'shome directory: ~s~n'  试了好多遍,找了好多资料,重装了一遍,还是不行  最后发现了这一篇文章:https://stackoverflow.com/questions/49376049/rabbitmq-argumenterror-argument-error

有这样一句话 Actually,my computer's username used to be chinese and now Ichange it to english,it also doesn't work.Now I think my path hasn't non-ASCIIcharactor.

大致意思是说:实际上,我的计算机的用户名曾经是中文,现在我将其更改为英文,但它也不起作用。现在我认为我的路径没有非ASCII字符。

这个我在想是不是也是因为我文件路径是中文的缘故,读取不到地址,所以我就把计算机的名字改掉了,改成了英文字符。(改的过程也不是那么顺利,看着网上一步一步走,结果,用户密码改的不对了,试了好多遍,哎没办法,我重装系统了重装系统了啊!!!)

系统重新装好之后有安装了一遍这个时候又出现了问题。

问题二:

安装好之后,访问网址http://localhost:15672访问不通。

最后解决方案:首先在命令行输入:rabbitmq-servicestop,接着输入rabbitmq-service remove,再接着输入rabbitmq-serviceinstall,接着输入rabbitmq-service start,最后重新输入rabbitmq-plugins enable rabbitmq_management试试

完美,执行成功!

rabbitMQ 常用命令

简单的列一下常用命令,方便以后用:

启动监控管理器:rabbitmq-plugins enable rabbitmq_management

关闭监控管理器:rabbitmq-plugins disable rabbitmq_management

启动rabbitmq:rabbitmq-service start

关闭rabbitmq:rabbitmq-service stop

查看所有的队列:rabbitmqctl list_queues

清除所有的队列:rabbitmqctl reset

关闭应用:rabbitmqctl stop_app

启动应用:rabbitmqctl start_app

用户和权限设置(后面用处)

添加用户:rabbitmqctl add_user username password

分配角色:rabbitmqctl set_user_tags username administrator


猜你喜欢

转载自blog.csdn.net/qq_35098526/article/details/80009424