RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是创建在Erlang OTP平台上。html
装RabbitMQ服务器必须首先安装 Erlang 运行环境。android
安装Erlang 时要注意安装的RabbityMQ 所依赖的Erlang版本,根据RabbitMQ的要求选择一个版本,这里我要安装的RabbitMQ的版本是 3.7.7 ,他依赖的Erlang版本范围是windows
19.3.6.4 到 21.0.x,所以我选择版本是OTP 20.3. Erlang下载地址。下载Erlang安装包后直接安装就能够了。api
我这里是默认安装因此Erlang的安装路径在:浏览器
C:\Program Files\erl9.3\bin\erl.exe
点击肯定在系统环境变量里就增长刚刚添加的ERLANG_HOME服务器
注意:若是以前安装了Erlang的其余版本,须要卸载后在进行从新安装和设置。测试
在开始菜单查找Erlang,点击启动 打开以下界面,那么Erlang就安装成功了。接下来就安装RabbitMQ。网站
能够在RabbitMQ的官方网站下载最新版本的RabbitMQ服务器安装程序,RabbitMQ下载地址, 这里我下载的是官方推荐的最新版本rabbitmq-server-3.7.7.exe, 而后点击默认安装。spa
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>
咱们用命令查看一下RabbtitMQ的全部插件:
C:\WINDOWS\system32>rabbitmq-plugins list
看到RabbtitMQ 罗列出来了不少插件
咱们用下列命令安装rabbitmq_management插件,这款插件是能够可视化的方式查看RabbitMQ 服务器实例的状态,以及操控RabbitMQ服务器。
C:\WINDOWS\system32>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的含义,其实这里的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 下的安装和基本设置步骤:
1.安装对应版本的Erlang 并设置环境变量
2.安装RabbitMQ
3.设置环境变量
4.安装插件rabbitmq_management
5.有了插件rabbitmq_management不少事情就能够在这个可视化插件中来完成了。