RabbitMQ 是一个消息中间件:它接收并转发消息。您能够把它想象为一个邮局:当您把须要寄出的邮件投递到邮箱,邮差最终会把邮件送给您的收件人。在这个比喻中,RabbitMQ 就是一个邮箱,也能够理解成邮局和邮递员。html
RabbitMQ 和邮局的主要区别在于它不处理纸张,而是接收、存储和转发二进制数据块 - 消息。shell
RabbitMQ 和消息传递一般使用一些术语。windows
生产 的意思无非就是发送。发送消息的程序就是一个 生产者:浏览器
队列 就是 RabbitMQ 内部“邮箱”的名称。虽然消息流经 RabbitMQ 和您的应用程序,但它们只能存储在 队列 中。队列 只受主机的内存和磁盘的限制,它本质上就是一个很大的消息缓冲区。多个 生产者 能够发送消息到一个队列,而且多个 消费者 能够尝试从一个 队列 接收数据。这就是咱们表明队列的方式:spa
消费 与接收有类似的含义,等待接收消息的程序就是一个 消费者:插件
注意:生产者、消费者和中间件不是必须部署在同一主机上,实际上在大多数应用程序中它们也不是这样的。3d
使用 .NET / C#Clientcode
在教程的这一部分,咱们将用 C# 编写两个程序:一个发送单条消息的生产者,以及接收消息并将其打印出来的消费者。咱们将忽略 .NET 客户端 API 中的一些细节,专一于更简单的开始。这是一个消息传递的“Hello World”。server
在下图中,P
是咱们的生产者,C
是咱们的消费者。中间的盒子是队列 - RabbitMQ 表明消费者保存的消息缓冲区。htm
.NET 客户端库
RabbitMQ 支持多种协议,本教程使用
AMQP 0-9-1
,它是一种开放的、通用的消息传递协议。RabbitMQ 提供了一些针对不一样 语言环境的客户端,咱们将使用 RabbitMQ 提供的 .NET 客户端。客户端支持 .NET Core 以及 .NET Framework 4.5.1+。本教程将使用 .NET Core,所以您须要确保客户端已 安装 而且路径添加到
PATH
系统变量。您也可使用 .NET Framework 来完成本教程,但设置步骤会有所不一样。
RabbitMQ .NET 客户端 5.0 及更高版本经过 nuget 发布。
本教程假定您在 Windows 上使用 PowerShell。在 MacOS 和 Linux 上,几乎全部 shell 也均可以正常工做。
一、RabbitMQ须要安装64位支持的Erlang for Windows版本。有一个用于Erlang的Windows安装程序。重要提示:必须使用管理账户运行Erlang安装程序,不然RabbitMQ安装程序所需的注册表项将不存在。
而后,运行RabbitMQ安装程序rabbitmq-server-3.7.9.exe。它将RabbitMQ安装为Windows服务,并使用默认配置启动它。
RabbitMQ下载地址:http://www.rabbitmq.com/download.html
Erlang for Windows下载地址:http://www.erlang.org/downloads
二、使用管理运行otp_win64_21.1.exe安装程序
使用系统默认便可,直接点击Next。选择安装路径后直接Next:
等待安装完成便可。
三、安装rabbitmq-server-3.7.9.exe,直接Next:
选择安装路径,而后Next,等待安装完成便可:
安装完成后检查服务中是否存在RabbitMQ的服务,RabbitMQ安装后默认为windows服务:
四、安装可视化管理插件,使用cmd定位到你的安装目下,命令以下:
rabbitmq-plugins enable rabbitmq_management
出现以下提示后在浏览器中访问:http://localhost:15672/,这里暂时没法登录,下面建立建立用户帐号后才可登陆
五、建立用户,密码,绑定角色
一、查看已有用户及用户的角色:
rabbitmqctl.bat list_users
二、建立用户:
rabbitmqctl add_user 用户名 密码
在次查看用户列表,会多出刚新建的admin用户
三、设置用户帐号权限,以刚建立的用户帐号admin为例设置为超级管理员。 命令以下:
rabbitmqctl set_user_tags admin administrator
查看用户列表 能够看出多了管理员权限,访问:http://localhost:15672/ 使用刚才建立的用户帐号便可登陆。
其余相关命令以下:
//设置用户权限 rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP //查看(指定hostpath)全部用户的权限信息 rabbitmqctl list_permissions [-p VHostPath] //查看指定用户的权限信息 rabbitmqctl list_user_permissions User // 清除用户的权限信息 rabbitmqctl clear_permissions [-p VHostPath] User //删除用户 rabbitmqctl delete_user Username //修改用户密码 rabbitmqctl change_password 用户名 新密码
参考园里博文:http://www.javashuo.com/article/p-yplqyfft-o.html
一、报错信息:None of the specified endpoints were reachable,该错误是使用的用户帐号没有相应Virtual Hosts权限。登陆RabbitMQ查看用户列表 没有权限访问
解决方案:点击列表中的admin 进入以下图所所示界面,设置权限保持默认便可。检查Tags是不是administrator