1.定义:MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。消息队列引入的异步通信机制,提高了数据处理的能力,降低数据库处理数据的负荷。

2.应用场景:1)不同系统之间的通信; 2)对实时性要求不高但是费时的操作,例如发送短信,邮件提醒,记录用户操作日志,更新文章阅读计数等等。

3.安装环境:

  1.由于RabbitMQ使用Erlang语言编写,所以先安装Erlang语言运行环境;

   先下载Erlang,网址是 http://www.erlang.org/downloads,安装完成以后,在我的电脑-属性-高级系统变量-环境变量-系统变量-Path,添加路径,比如我的路径是D:\Program Files\erl9.1\bin ,然后确定即可。

   打开 cmd ,输入 erl 后回车,如果看到版本信息,就是安装成功了。

  2.安装RabbitMQ服务端 地址 http://www.rabbitmq.com/,安装以后服务自己启动,不需要管,RabbitMQ会为我们创建默认的用户名guest和密码guest,guest默认拥有RabbitMQ的所有权限。

    如果需要创建新用户,可以在在cmd里找到路径如图(注意是找到sbin这个目录):,执行命令:

  rabbitmqctl  add_user  zy zy   //创建用户zy密码为zy

  rabbitmqctl  set_permissions  zy  ".*"  ".*"  ".*"

  rabbitmqctl  set_user_tags zy administrator

  3. 开启rabbitmq_management插件,在web界面查看和管理RabbitMQ服务,在命令行里输入   rabbitmq-plugins enable rabbitmq_management ,端口号是15672

  4.在新建的发送端项目里,安装NuGet里的RabitMQ包,

  namespace RabbitMQDemo
{
    class Program
    {

/// <summary>
        /// 需要先安装NuGet程序包-RabbitMQ
        /// 发送端 create by zhangyu 2017.10.26
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            string queueName = "hello";

var factory = new ConnectionFactory();
            factory.HostName = "localhost";//RabbitMQ服务在本地运行,RabbitMQ不在本机,只需要设置目标机器的IP地址或者机器名称即可
            factory.UserName = "zy";
            factory.Password = "zy";

     //1.简单实例
            using (var connection = factory.createconnection())
            {
                //如果要发送消息,需要创建一个队列,然后将消息发布到这个队列中,在创建队列的时候,只有rabbitmq上该队列不存在,才会去创建
                //消息是以二进制数组的形式传输的,所以如果消息是实体对象的话,需要序列化,然后转化为二进制数组。(可以使用jsonconvert.serializeobject)
                using (var channel = connection.createmodel())
                {
                    channel.queuedeclare(queuename, false, false, false, null);//创建一个名称为hello的消息队列
                    string message = "hello world!";//需要发送的消息
                    var body = encoding.utf8.getbytes(message);
                    channel.basicpublish("", queuename, null, body);//发布消息
                    console.writeline("已发送:{0}", message);
                    console.readline();
                }
          }

   }

}

  5.创建接收端:

  using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
using System.Threading;

namespace RabbitMQDemoReceive
{
    /// <summary>
    /// 需要先安装NuGet程序包-RabbitMQ
    /// 接受端 create by zhangyu 2017.10.26
    /// </summary>
    /// <param name="args"></param>
    class Program
    {
        static void Main(string[] args)
        {
            string queueName = "hello";

var factory = new ConnectionFactory();
            factory.HostName = "localhost";
            factory.UserName = "zy";
            factory.Password = "zy";
  using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queueName, false, false, false, null);
                    var consumer = new EventingBasicConsumer(channel);
                    channel.BasicConsume(queueName, false, consumer);
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine("已接收: {0}", message);
                    };
                    Console.ReadLine();
                }
            }

}
}
6.

现在发送和接收的客户端都写好了,让我们编译执行起来

发送消息:

接收消息:

web界面查看,端口号是15672

<a href="https://files.cnblogs.com/files/randy619/netCore%E4%BD%BF%E7%94%A8RabbitMQ%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97.7z">更多内容</a>

.nerCore-RabbitMQDemo消息队列的更多相关文章

  1. 消息队列 概念 配合SpringBoot使用Demo

    转http://www.jianshu.com/p/048e954dab40 概念: 分布式消息队列 ‘分布式消息队列’包含两个概念 一是‘消息队列’,二是‘分布式’ 那么就先看下消息队列的概念,和为 ...

  2. .net core使用rabbitmq消息队列

    看博文的朋友,本文有些过时了,还有些BUG,如果想了解更多用法,看看这篇吧:.net core使用rabbitmq消息队列 (二) 首先,如果你还没有安装好rabbitmq,可以参考我的博客: Ubu ...

  3. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  4. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  5. .net 分布式架构之业务消息队列

    开源QQ群: .net 开源基础服务  238543768 开源地址: http://git.oschina.net/chejiangyi/Dyd.BusinessMQ ## 业务消息队列 ##业务消 ...

  6. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  7. Java消息队列--ActiveMq 实战

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  8. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  9. 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)

    Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分 ...

随机推荐

  1. RIFF

    RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构. RIFF文件所包含的数据类型由该文件的扩展 ...

  2. 1 (msql实战) 基础架构

    mysql> select * from T where ID=10: 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程. 所以今天我想和你一起把 MyS ...

  3. 记录一次Nginx使用第三方模块fair导致的线上故障排错

    一.问题 今天发现有一台服务器的内存飙升,然后有预警,立即排查,发现该服务内存使用达到了 2G ,询问开发,当天是否有活动,被告知没有,登陆 Pinpoint 发现该服务是有两台机器,并且所有的访问都 ...

  4. 142、Java内部类之在普通方法里面定义内部类

    01.代码如下: package TIANPAN; class Outer { // 外部类 private String msg = "Hello World !"; publi ...

  5. 《React后台管理系统实战 :二》antd左导航:cmd批量创建子/目录、用antd进行页面布局、分离左导航为单独组件、子路由、动态写左导航、css样式相对陷阱

    一.admin页面布局及路由创建 0)cmd批量创建目录及子目录 //创建各个目录,及charts和子目录bar md home category product role user charts\b ...

  6. Windows驱动开发-Device结构体

    每个驱动程序会创建一个或多个设备对象,每个设备对象都会有一个指针指向下一个设备对象 Device结构体源码 typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATIO ...

  7. 新闻网大数据实时分析可视化系统项目——12、Hive与HBase集成进行数据分析

    (一)Hive 概述 (二)Hive在Hadoop生态圈中的位置 (三)Hive 架构设计 (四)Hive 的优点及应用场景 (五)Hive 的下载和安装部署 1.Hive 下载 Apache版本的H ...

  8. Spring 通读官方文档

    Spring 通读官方文档 这部分参考文档涵盖了Spring Framework绝对不可或缺的所有技术. 其中最重要的是Spring Framework的控制反转(IoC)容器.Spring框架的Io ...

  9. linux环境下查看tomcat日志

    1.先切换到:cd usr/local/tomcat5/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志 Ctrl+c 是退出tail命令. alt+E+R ...

  10. 「POI2017」Flappy Bird

    传送门 Luogu团队题 解题思路 数据范围不小啊,离散也不行,DP不了,考虑贪心+递推. 我们递推出小鸟可以到达的高度区间. 我们发现,小鸟最好的情况就是在当前基础上,从最下方一直往下飞,或者从最上 ...