竹影横扫窗

导航

 

参考: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会消费队列中消息。

 

 

 显示消息已经被消费。

 

posted on 2019-10-25 10:25  竹影横扫窗  阅读(428)  评论(0编辑  收藏  举报