RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端

安装RabbitMQ必须要有Erlang的环境,没有装好环境的这里给出Erlang的官网可自行下载:https://www.erlang.org

一、配置RabbitMQ

  1.将RabbitMQ的安装路径添加到环境变量中,启动RabbitMQ

  2.启动WEB管理界面:rabbitmq-plugins enable rabbitmq_management

  3.登录管理界面,RabbitMQ的管理界面的默认访问路径为:http://localhost:15672

  4.可以使用guest用户登录,密码也是guest

    

二、C#实现的小案例,这里给出官方教程:https://www.rabbitmq.com/getstarted.html

  1.发布者

     static void Main(string[] args)
{
var factory = new ConnectionFactory();
factory.HostName = "localhost";
factory.UserName = "guest";
factory.Password = "guest"; using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{ bool durable = true;
//声明一个名称为:hello的持久化的队列
channel.QueueDeclare("hello", durable, false, false, null); string message = GetMessage(args);
var properties = channel.CreateBasicProperties();
properties.SetPersistent(true);             //写入队列
for (int i = ; i < ; i++)
{
var body = Encoding.UTF8.GetBytes(message+i);
channel.BasicPublish("", "hello", properties, body);
Console.WriteLine(" Send {0}", message+i);
}
}
} Console.ReadKey();
}
private static string GetMessage(string[] args)
{
return ((args.Length > ) ? string.Join(" ", args) : "Hello HT");
}

  2.消费者

       static void Main(string[] args)
{
var factory = new ConnectionFactory();
factory.HostName = "localhost";
factory.UserName = "guest";
factory.Password = "guest"; using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
bool durable = true;
//在MQ上定义一个持久化队列,名称为:hello,如果名称相同不会重复创建
channel.QueueDeclare("hello", durable, false, false, null);
//输入1,那如果接收一个消息,如果没有应答,则客户端不会收到下一个消息

            //监听队列
channel.BasicQos(, , false); var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", false, consumer);
            //获取消息
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); var body = ea.Body;
var message = Encoding.UTF8.GetString(body); int dots = message.Split('.').Length - ;
Thread.Sleep(dots * ); Console.WriteLine("Received {0}", message);
Console.WriteLine("Done");
//回复确认
channel.BasicAck(ea.DeliveryTag, false);
}
}
}
}

  3、通过发布者的创建我们可以在管理界面中查看到添加的队列

  

用C#实现Rabbitmq应用的小实例的更多相关文章

  1. winform 异步读取数据 小实例

    这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...

  2. CSS应用内容补充及小实例

    一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. Objective-C之代理设计模式小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  4. Objective-C之@类别小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. OC小实例关于init方法不小心的错误

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. canva实践小实例 —— 马赛克效果

    前面给大家带来了操作像素的API,此时此刻,我觉得应该配以小实例来进行进一步的说明和演示,以便给大家带来更宽广的视野和灵感,你们看了我的那么多的文章,应该是懂我的风格,废话不多说,进入正题: 这次给大 ...

  7. canvas实践小实例二 —— 扇形

    俗话说:发图不留种,菊花万人捅!我这里想延伸一下:教学不给例,说你是傻逼!哎呀,还挺押韵,嘻嘻,开个玩笑! 我们都讲了四期API的知识了,估计大家看的也是枯燥的很啊,前面的小实例也是太简单,简直不解渴 ...

  8. canvas实践小实例一 —— 画板工具

    前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...

  9. HTML5自学笔记[ 13 ]canvas绘图小实例之方块移动

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. Pandas学习整理与实践

    Part 1. Pandas初识 作为一款数据处理工具,Pandas本身集成了Numpy(数据计算处理)及matplotlib(绘图),其便捷的数据处理能力.方便的文件读写以及支持多维度的表示方式使其 ...

  2. 深度学习最全优化方法总结比较及在tensorflow实现

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u010899985/article/d ...

  3. mod_spatialite.so.7

  4. 019 spring social

    1.原理 2. 3. 4.

  5. 爬虫框架Scrapy的安装

    Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/lat ...

  6. LeetCode 257. Binary Tree Paths(二叉树根到叶子的全部路径)

    Given a binary tree, return all root-to-leaf paths. Note: A leaf is a node with no children. Example ...

  7. “无法启动IIS Express Web服务器”的解决办法

    “无法启动IIS Express Web服务器”的解决办法 听语音 原创 | 浏览:259 | 更新:2019-07-15 13:02 1 2 3 4 5 6 7 分步阅读 在使用visual stu ...

  8. Egret《决战沙城》框架学习

    源码地址:https://github.com/yicaoyimuys/EgretGameEngine 虽然走花观马看了看,但是收获还是蛮多. mvc: BaseController          ...

  9. 【漫谈数据仓库】 如何优雅地设计数据分层 ODS DW DM层级

    转载http://bigdata.51cto.com/art/201710/554810.htm 一.文章主题 本文主要讲解数据仓库的一个重要环节:如何设计数据分层!其它关于数据仓库的内容可参考之前的 ...

  10. BladeX 部署centos启动顺序

    一:启动dockerservice docker start二:启动mysqldocker start mysql三:启动Harborsystemctl restart docker(如有修改daem ...