赞
踩
RabbitMQ是一个消息中转站,最大的特点是多平台知支持,多语言支持,支持集群。
多平台比较好理解,它可以部署到Linux、Windows、Windows Server、macOS等等平台系统,市面上几乎所有的操作系统都可以安装。
多语言也容易理解,它支持多种语言进行接口开发,比如Python、Java、Ruby、PHP、C#等。
支持集群,目前很多技术都支持集群,在保证系统稳定的情况下,可以拓展服务器数量以保证信息处理效率提升;
特点:
官网 https://rabbitmq.com/install-windows.html
或者在github也可以下载
https://github.com/rabbitmq/rabbitmq-server/releases
我们以官网下载为例,下载RabbitMQ安装包之后还要下载Erlang。RabbitMQ是用Erlang写的,所以安装的时候也要安装Erlang,这个是RabbitMQ的运行环境。
实际上RabbitMQ和Erlang还有版本兼容的问题,这边不用担心,两个直接下载最新的就没问题。
如果想了解一下详细情况,可以点击下面的链接进去看:
首先,先安装环境Erlang:
大部分点都会要求安装VC++,我们默认安装即可
安装完成之后会提示重新启动,点确定
接下来等待安装完成
安装完成之后需要设置环境变量。右键此电脑 - 属性 - 高级系统设置 -高级- 环境变量
安装目录一般是 C:\Program Files\Erlang OTP\bin
添加完之后Erlang安装完毕,开始安装RabbitMQ
都是默认下一步
找到安装目录,一般是C:\Program Files\RabbitMQ Server\rabbitmq_server-3.11.9\sbin
在路径上输入cmd,或者直接打开cmd,输入cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.11.9\sbin
总之就是将CMD定位到这个文件夹
输入abbitmq-plugins enable rabbitmq_management,启用插件
快捷键 Ctrl+Shift+Esc,找到rabbitmq服务右键重新启动。
系统重启
不要用IE 用谷歌浏览器或者其他谷歌内核的浏览器 输入localhost:15672,访问RabbitMQ。出现以下界面就算安装成功:
guest/guest登录
接口信息地址:http://localhost/api/index.html
显示所有用户:rabbitmqctl list_users
查看状态:rabbitmqctl status。这里经常会有报错,看下面的方法
出错的原因是cookie冲突,只要替换一下就OK:
C:\Windows\System32\config\systemprofile.erlang.cookie
C:\Users\Administrator.erlang.cookie
把 RabbitMQ Service 的 Cookie 文件复制覆盖到用户的 Cookie 。或者停止 RabbitMQ Service,手动运行 rabbitmq-server.bat也能解决这个问题。
再次查看状态:
添加用户,实际上添加用户也可以在网页上面操作,更加直观
目前只有一个用户 guest,并且它的 tag 是 administrator.
可以用命令创建一个用户,创建用户的命令格式是:
rabbitmqctl add_user [username] [password]
现在创建一个 rabbit1/rabbit1 的用户, 命令如下:
rabbitmqctl add_user rabbit1 rabbit1
给用户设置tag,命令格式如下
rabbitmqctl set_user_tag [tag1] [tag2] …
一次可以给一个用户设置多个 tag,也可以设置一个
rabbitmgctl set user tags rabbit1 administrator none
实际上大部分的草走都可以在网页上完成,命令不是唯一方式。
创建一个控制台项目server,右键-管理nuget程序包
server的代码如下
/static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "xxx.xxx.xxx.xxx",//这里写实际地址 本地的写localhost UserName = "rabbit1", Password = "rabbit1", //Port = AmqpTcpEndpoint.UseDefaultPort, //VirtualHost = "/", }; 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.ToArray()); Console.WriteLine(" [x] Received {0}", message); }; channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } }
同理,也建立一个client控制台项目,代码如下:
static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "10.0.12.180", UserName = "rabbit1", Password = "rabbit1", //Port = AmqpTcpEndpoint.UseDefaultPort, //VirtualHost = "/", }; 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(); }
这里要对rabbit1做一个调整,允许其可以访问虚拟host,命令如下
rabbitmqctl set_permissions -p / rabbit1 “." ".” “.*”
运行server和client,如下图所示,实现rabbitMQ通讯
git代码:https://github.com/chenheze90/Leaning06_RabbitMQ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。