1. 简介

    • RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java,也是众多消息队列中表现不俗的一员,作用就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源的操作,放入队列,再由另外一个线程,去异步处理这些队列,可极大的提高系统的并发能力。

  2. 安装

    • 安装RabbitMq需要erlang,点击下载
    • 去官网下载Rabbit安装包,点击下载
    • 安装完成之后,rabbitmq还提供了强大的web版本管理界面,启用方式-》打开CMD命令,cd到安装目录sbin下,输入命令rabbitmq-plugins enable rabbitmq_management; 
  3. “hello world”(.NET中Rabbimq使用)

    1.实例参考官网教程

2.使用官网提供的c#操作类库RabbitMQ.Client

我们先分别创建两个控制台程序 一个用来发送消息到rabbitmq 消息代理作为什么生产者;另外一个从中读取进行消费作为消费者。

如:p代表生成者,c代表消费者,中间的部分代表消息队列

生成者的代码如下:

 public static void RunSend()
        {
            ConnectionFactory connectionFactory = new ConnectionFactory()
            {
                HostName = "192.168.35.129",
                Port = ,
                Password = ",
                UserName = "mquser"
            };

            //建立连接rabbitmq 消息代理服务器。
            using (IConnection conn = connectionFactory.CreateConnection())
            {
                //创建Channel对象
                using (IModel channel = conn.CreateModel())
                {
                    //声明队列
                    channel.QueueDeclare("hello", durable: false,
                        exclusive: false,
                        autoDelete: false,
                        arguments: null);
                    //消息 ,此处是简单的字符串,你也可以定义复杂的消息体
                    string msg = "Hello World";

                    var body = Encoding.UTF8.GetBytes(msg);

                    //把消息放到队列中
                    channel.BasicPublish(exchange:"",
                        routingKey:"hello",
                        basicProperties:null,
                        body:body);

                    Console.WriteLine("send {0}",msg);

                }
            }
        }

消费者的代码如下:

public static void RunReceive()
        {

            ConnectionFactory connectionFactory = new ConnectionFactory()
            {
                HostName = "192.168.35.129",
                Port = ,
                Password = ",
                UserName = "mquser"
            };
            using (IConnection conn = connectionFactory.CreateConnection())
            {

                using (IModel channel = conn.CreateModel())
                {
                    //注意:在 send.CS 中也声明了队列Hello,这里为什么要再次声明
                    //第一:QueueDeclare 实现了幂等性,创建的时候如果已经存在,就不会再次创建。
                    //第二:因为 两边都进行创建,不用考虑 生产者 和消费者 启动的顺序了。
                    channel.QueueDeclare("hello", durable: false,
                        exclusive: false,
                        autoDelete: false,
                        arguments: null);

                    //创建事件驱动的消费者类型;建议使用此种方式,不要使用while(true)
                    //理由吗 哈哈 看看王清培的博客吧。不稳定不优雅。。。
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (sender, e) =>
                    {
                        var body = e.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine(" [x] Received {0}", message);
                    };

                    channel.BasicConsume(queue: "hello",
                                noAck: true,
                                consumer: consumer);

                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
            }
        }

输出

好了rabbitmq入门篇讲完了,是不是很简单。

RabbitMq学习一入门篇(hello world)的更多相关文章

  1. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  2. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  3. PHP学习笔记 - 入门篇(5)

    PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney ...

  4. PHP学习笔记 - 入门篇(4)

    PHP学习笔记 - 入门篇(4) 什么是运算符 PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要 ...

  5. PHP学习笔记 - 入门篇(3)

    PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...

  6. PHP学习笔记--入门篇

    PHP学习笔记--入门篇 一.Echo语句 1.格式 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来) 如下代码 <?php echo "Hello world! ...

  7. netty深入学习之一: 入门篇

    netty深入学习之一: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NI ...

  8. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  9. Elasticsearch学习记录(入门篇)

    Elasticsearch学习记录(入门篇) 1. Elasticsearch的请求与结果 请求结构 curl -X<VERB> '<PROTOCOL>://<HOST& ...

随机推荐

  1. 一位菜鸟的java 最基础笔记

    java的特性 简单性(Simple). 结构体系中立(Architecture Neutral). 面向对象(Object Oriented). 易于移植(Portable). 分布式(Distri ...

  2. 微信小程序多张图片上传

    微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...

  3. nodeJS实现简单网页爬虫功能

    前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码,以hao123网站的头条页面为例 http://tuijian.hao123.com/h ...

  4. 【源码分享】jquery+css实现侧边导航栏

    jquery+css实现侧边导航栏 最近做项目的时候,突然想用一个侧边导航栏,网上找了几个插件,有的太丑而且不太符合我的预期.与其修改别人的代码,不如自己来写一个了.废话不多说先上图,感兴趣的请继续看 ...

  5. .Net开发的两个小技巧

    一.@符号的妙用 1.可以作为保留关键字的标识符 C#规范当中,不允许使用保留关键字(class.bool等)当作普通的标识符来命名,这时候@符号作用就体现 出来了,可以通过@符号前缀把这些保留关键字 ...

  6. Vue2.0 从零开始--搭建环境

    简要:继项目空闲后,开始着手vue的学习;为此向大家分享其中的艰辛和搭建办法,希望能够跟各位VUE大神学习探索,如果有不对或者好的建议告知下:*~*! 一.什么是VUE? 是一种node.js框架,特 ...

  7. Bash提示符

    Bash有四种提示符 1.基本提示符(PS1):即$符号,是默认的基本提示符,当Shell运行在交互模式下时,该提示符会出现在屏幕上,可以设置为其它符号. 显示PS1设置[cb@cb:16:36:23 ...

  8. SQL Server数据类型有哪些

    一. 整数数据类型 整数数据类型是最常用的数据类型之一. 1.INT (INTEGER) INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次 ...

  9. Java垃圾回收总结

    基本概念 垃圾回收器(Garbage Collector )是JVM非常重要的一个组成部分,主要用于自动化的内存管理.相比手动的内存管理,自动化的内存管理大大简化了程序员的开发难度并且更加安全,避免了 ...

  10. php Base64编码文件二进制流主要使用

    <?php header( "Content-type: image/jpeg"); //$filename='1.jpg'; //$content=file_get_con ...