码迷,mamicode.com
首页 > Windows程序 > 详细

netcore使用RabbitMQ入门--win10开发环境(实践篇无理论)

时间:2020-07-24 21:19:30      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:lazy   网络   play   入门   介绍   gem   +=   rtu   win   

1.进入rabbitMQ官网下载安装包

技术图片

 

 2.点击安装包安装的时候会提示需要先装erlang

技术图片

 

 点击是会自动跳转到erlang的下载界面如果没有跳转可以直接点击这里下载,根据系统选择下载包

技术图片

 

 下载完之后双击exe安装包进行安装,一直下一步就行了(如果不想装在c盘那就改一下盘符)

3.装完了erlang,回去找到刚才第一步下载的rabbitMQ的安装包双击安装,一样的一直下一步就行了(中间遇到需要给它网络点确定就可以了)

4.以上步骤完成了rabbitMQ服务的安装,为了方便操作和管理下面我们安装可视化管理界面

 4.1打开cmd界面进入rabbitMQ的安装目录下的sbin目录

  技术图片

 

 4.2根据官网步骤执行命令rabbitmq-plugins enable rabbitmq_management

  技术图片

 

 4.3安装成功找到安装目录找到rabbitmq-server.bat双击运行(如果有错就右键以管理员身份运行)出现如下界面

技术图片

 

 4.4打开浏览器访问http://localhost:15672/

技术图片

 

4.5默认用户和密码都是guest直接登录看下结果

技术图片


代码实现

1,创建demo生产者控制台项目

技术图片

 

 2,通过nuget安装RabbitMQ.Client

技术图片

 3,在主函数Main里面写生产者代码这里先生产5条消息只是简单的demo(特别提醒代码里的端口号是5672不是进入管理地址的15672)

技术图片

技术图片
string hostName = "192.168.50.176";
            int port = 5672;//默认端口5672;前端界面的端口是15672特别注意不要混淆
            string userName = "wyb";
            string password = "123456";
            string virtualHost = "/";

            //创建一个连接工厂
            var factory = new ConnectionFactory();
            factory.UserName = userName;
            factory.Password = password;
            factory.HostName = hostName;
            factory.Port = port;
            factory.VirtualHost = virtualHost;
            //创建一个连接,此时可以在rabbitmq后台Web管理页面中的Connections中看到一个连接生成
            //一个连接可以创建多个通道
            var connection = factory.CreateConnection();

            string queueName = "q1";//队列名称

            //创建一个通道
            //此时可以在rabbitmq后台Web管理页面中的Channels中看到一个新通道生成
            var channel = connection.CreateModel();
            //给通道绑定一个队列,队列如果不存在,则会创建新队列,如果队列已存在,那么参数一定要正确,特别是arguments参数,否则会报错
            var arguments = new Dictionary<string, object>() { { "x-queue-type", "classic" } };
            channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: arguments);

            //发布5条消息
            for (var i = 0; i < 5; i++)
            {
                var buffer = Encoding.UTF8.GetBytes(i.ToString());
                channel.BasicPublish("", queueName, null, buffer);
                Console.WriteLine("发布消息:"+i);
            }
            channel.Close();

            Console.ReadKey();
View Code

4,f5运行项目看到如下结果就表示成功

技术图片

 

 

技术图片

 

 

 技术图片

 

 

5,同生产者项目一样的步骤创建一下消费者控制台项目(一样nuget安装RabbitMQ.Client)

技术图片

6,在消费者项目的main函数里写消费者的代码

技术图片

 

 

技术图片
string hostName = "192.168.50.176";
            int port = 5672;//默认端口5672;前端界面的端口是15672特别注意不要混淆
            string userName = "wyb";
            string password = "123456";
            string virtualHost = "/";

            //创建一个连接工厂
            var factory = new ConnectionFactory();
            factory.UserName = userName;
            factory.Password = password;
            factory.HostName = hostName;
            factory.Port = port;
            factory.VirtualHost = virtualHost;
            //创建一个连接,此时可以在rabbitmq后台Web管理页面中的Connections中看到一个连接生成
            //一个连接可以创建多个通道
            var connection = factory.CreateConnection();

            string queue = "q1";//队列名称

            //创建一个通道
            //此时可以在rabbitmq后台Web管理页面中的Channels中看到一个新通道生成
            var channel = connection.CreateModel();
            //给通道绑定一个队列,队列如果不存在,则会创建新队列,如果队列已存在,那么参数一定要正确,特别是arguments参数,否则会报错
            var arguments = new Dictionary<string, object>() { { "x-queue-type", "classic" } };
            channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: arguments);
            //channel.BasicQos(2, 2, false);//设置QOS

            //在通道中定义一个事件消费者
            EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
            consumer.Received += (sender, e) =>
            {
                var body = e.Body.Span;
                var message = Encoding.UTF8.GetString(body);
                Console.WriteLine($"接收到消息:{message}");

                Thread.Sleep(500);//暂停一下

                //通知消息已被处理,如果没有,那么消息将会被重复消费
                channel.BasicAck(e.DeliveryTag, false);
            };
            //ack设置成false,表示不自动提交,那么就需要在消息被消费后,手动调用BasicAck去提交消息
            channel.BasicConsume(queue, false, consumer);

            Console.ReadKey();
View Code

7运行消费者项目结果如下

技术图片

 

 

技术图片

 

 

结束

简单操作到此,后面再介绍实际应用

netcore使用RabbitMQ入门--win10开发环境(实践篇无理论)

标签:lazy   网络   play   入门   介绍   gem   +=   rtu   win   

原文地址:https://www.cnblogs.com/wuyubing/p/13141193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!