参考:https://my.oschina.net/loveorange/blog/3026473
安装参考链接:
1. 下载自己需要的rabbitmq_server(http://www.rabbitmq.com/download.html)版本和erlang环境(http://www.erlang.org/downloads)。
2. 先安装erlang环境,并添加环境变量。
control panel --> (Viewed By Category)选择System and Security -->选择System
环境变量添加可参考https://my.oschina.net/loveorange/blog/3026473
3. 验证erl是否安装成功
以管理员身份输入cmd打开控制面板,输入erl验证是否安装成功
4. 安装rabbitmq
安装完成后 cmd 命令到安装目录下的sbin 目录 键入命令: rabbitmq-plugins.bat enable rabbitmq_management 开启插件
键入: rabbitmq-server 启动MQ
浏览器http://localhost:15672/ 访问MQ的主页 初始化密码和用户名都是: guest
5. rabbitmq在.NET中的简单应用
一、 程序准备
(1)浏览器中打开QM主页后,添加用户。(如果没有添加有权限的用户,则无法在程序中创建连接)
(2)初始添加用户后,用户没有权限,显示如下:
此时, 鼠标点击用户名test,点击set permission 为该用户设置权限
二、 程序实现
生产者:
namespace Send { class Program { static void Main(string[] args) { Console.WriteLine("Start!"); IConnectionFactory conFactory = new ConnectionFactory//创建连接工厂对象 { HostName = "10.64.228.211", Port = 5672, UserName = "wl", Password = "123456" }; using (IConnection con = conFactory.CreateConnection())//创建连接 { using (IModel channel = con.CreateModel())//创建通道 { // 创建交换机 string queueName = "testQueue1"; string exchangeName = "exchangeTest1"; string routingKey = "routingKeyTest1"; channel.ExchangeDeclare(exchangeName, ExchangeType.Direct); //创建一个消息队列并绑定到交换机上 channel.QueueDeclare(queueName, true, false, false, null); channel.QueueBind(queueName, exchangeName,routingKey,null); //Console.WriteLine("消息内容:"); string message = string.Empty; for (int i= 0; i< 10000; i++) { message = Thread.CurrentThread.ManagedThreadId + i.ToString(); byte[] body = Encoding.UTF8.GetBytes(message);//消息内容 //发送消息到消息队列 channel.BasicPublish(exchangeName, routingKey, null, body); } // Console.Write("成功发送消息:" + message); } } } } }
启动该服务,可以在rabbitmq的主页中看到接收的消息。
消费者
namespace Receive { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); IConnectionFactory conFactory = new ConnectionFactory//创建连接工厂对象 { HostName = "10.64.228.211", Port = 5672, UserName = "wl", Password = "123456" }; using (IConnection conn = conFactory.CreateConnection())//创建连接 { using (IModel channel = conn.CreateModel())//创建通道 { // 取出消息 string queueName = "testQueue1"; //创建消费者对象 var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { byte[] message = ea.Body;//接收到的消息 Encoding.UTF8.GetString(message); }; //消费者开启监听 var consumeResult = channel.BasicConsume(queueName, true,consumer); Console.ReadKey(); } } } } }
启动消费服务,mq会消费队列中消息。
显示消息已经被消费。