zoukankan      html  css  js  c++  java
  • rabbitmq安装及简单demo练习

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

     显示消息已经被消费。

  • 相关阅读:
    rpm软件包以及rmp命令
    使用ssh-keygen生成密钥对
    从现有的虚拟机创建vagrant box ,再利用新创建的box创建虚拟机
    EXCEL固定行和列
    URL编码
    标准ASCII码
    base64编码
    http学习--URL字符
    浏览器通过http获取服务器资源的过程
    一名程序员过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告
  • 原文地址:https://www.cnblogs.com/mo-lu/p/11725194.html
Copyright © 2011-2022 走看看