安装 RabbitMQ 服务器必须首先安装 Erlang 运行环境。
安装 Erlang 时要注意安装的 RabbityMQ 所依赖的 Erlang 版本,根据 RabbitMQ 的要求选择一个版本,这里我要安装的 RabbitMQ 的版本是 3.7.7 ,他依赖的Erlang版本范围是19.3.6.4 到 21.0.x,因此我选择版本是OTP 20.3. Erlang下载地址:https://www.erlang.org/downloads。下载Erlang安装包后直接安装就可以了。
设置 ERLANG_HOME 环境变量


注意:如果之前安装了 Erlang的其他版本,需要卸载后在进行重新安装和设置。
在开始菜单查找 Erlang,点击启动 打开如下界面,那么 Erlang 就安装成功了。接下来就安装 RabbitMQ。

可以在 RabbitMQ 的官方网站下载最新版本的 RabbitMQ 服务器安装程序,RabbitMQ 下载地址:https://www.rabbitmq.com/install-windows.html 然后点击默认安装。

RabbitMQ 安装好后是作为 windows service 运行在后台。

RabbitMQ 安装好后在开始菜单输入 rabbitmq 会看到三个菜单:

这里的三个菜单是提供控制 Windows service 的命令,为了能够在任意 Windows 命令窗口上操控RabbitMQ 服务需要在系统里加一个环境变量并且配置在系统的 PHTH 环境变量中。
首先添加一个 RABBITQM_SERVER 变量:

然后在系统的 path 变量中配置如下:

这样就可以在 windows administrator 启动的 CMD 窗口操控 RabbitMQ 服务了。不需要每次都定位到: C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.7\sbin>
安装 rabbitmq_management 我们用命令查看一下 RabbtitMQ 的所有插件:
rabbitmq-plugins list
看到 RabbtitMQ 罗列出来了很多插件

我们用下列命令安装 rabbitmq_management 插件,这款插件是可以可视化的方式查看 RabbitMQ 服务器实例的状态,以及操控 RabbitMQ 服务器。
rabbitmq-plugins enable rabbitmq_management
运行完命令后,看到下图表示安装成功了。

现在我们在浏览器中输入:http://localhost:15672 可以看到一个登录界面:

这里可以使用默认账号 guest / guest 登录后的界面如下:

在浏览器中输入 http://localhost:15672/api/ 就可以看到 RabbitMQ Management HTTP API 文档,如下图:

这样就可以查看 RabbitMQ server 实例状态的相关信息了。
用命令 rabbitmqctl list_users 查看一下现 rabbitmq_management 注册用户

发现现在只有一个用户 guest,并且它的 tag 是 administrator.
那么在命令行下创建一个用户,创建用户的命令合是:
rabbitmqctl add_user [username] [password]
现在创建一个 username = rabbit1 password = rabbit1 的用户, 命令如下:
rabbitmqctl add_user rabbit1 rabbit1
创建成功了:

现在看下有多少用户,跑一下命令:
rabbitmqctl list_users

发现用户列表里多了一个用户 rabbit1, 但是 tag 是空的。使用命令给 rabbit 设置 tag,设置 tag 的命令格式:
rabbitmqctl set_user_tag [tag1] [tag2] …
一次可以给一个用户设置多个 tag,也可以设置一个

现在 rabbit1 有两个 tag 了一个是 administrator ,一个是 none.
有5个 tag 可供选择,分别是:administrator ,monitoring,policymaker,management 和 none,其实这里的 tag 代表的是权限,administrator 是最高权限,none 表示不能访问,这里 administrator 和 none 的组合,权限应该是向高看齐,忽略 none,用的是 administrator 的权限。我们用 rabbit1 / rabbit1 登录 rabbitmq_management。

其实有了 rabbitmq_management 这个可视化插件,很多事情都可以在这个插件里干,包括创建用户,创建交换机(Exchange)和创建队列(Queque)。
关于 Rabbit 的在 windows 下的基本配置就告一段落,关于更多的更高级的配置,可以参考官网,有了 rabbitmq_management 插件确实方便了不少。下面就开始创建客户端进行测试了。
创建两个 .Net Core Console 类型的应用程序,一个用于发送消息,一个用于接收消息。
using System;
using System.Text;
using RabbitMQ.Client;
namespace Q.Demo.Send
{
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
while (true)
{
var input = Console.ReadLine();
string message = input;
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "",
routingKey: "hello",
basicProperties: null,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
}
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}using System;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace Q.Demo.Receive
{
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
}运行输入消息效果如下:

关于 RabbitMQ 在 windows 下的安装和基本设置步骤: