Hello RabbitMQ

终于到了使用.Net连接RabbitMQ的时候了,我们首先新建一个控制台应用程序,在程序包管理控制器中NuGet中下载 RabbitMQ。

Install-Package RabbitMQ.Client

安装完成后,就可以着手做一个RabbitMQ的消息发布程序了。首先 using RabbitMQ.Client;

从工厂中拿到实例, 这里的User不建议使用guest,因为guest被设置了回环,也就是仅在本地可以被登陆,在其它的机器在浏览器中是无法使用guest账户登陆的,当然在config中可以去设置,但是这是没有好处的

//从工厂中拿到实例 本地host、用户admin
var factory = new ConnectionFactory()
{
UserName = "admin",
Password = "admin",
HostName = "localhost"
};

有的朋友会说,我没有账户怎么办? 可以用到上一篇博文说的ctl去创建一个用户

rabbitmqctl add_user admin admin

然后为admin用户设置vhost的权限

rabbitmqctl set_permissions admin '.*' '.*' '.*'

回到代码中,这时候新建一个连接,因为在连接被使用完后需要释放,所以我们可以使用using包裹起来

//创建连接
using (var connection = factory.CreateConnection())

有了连接这时候就可以创建一个channl(频道)了

//创建返回一个新的频道
using (var channel = connection.CreateModel())

下一步是需要指定一个交换机的,但是RabbitMQ有一个默认的交换机,为了方便所以这一步忽略

声明一个队列,然后发布一条消息,这时候可以把项目运行起来了

//声明队列
channel.QueueDeclare("firstTest", true, false, false, null);
//发布消息
var msg = Encoding.UTF8.GetBytes("Hello RabbitMQ");
channel.BasicPublish(string.Empty, routingKey: "firstTest", basicProperties: null, body: msg);

在Web管理工具中就可以看到我们新加的队列 firstTest,而且有一条消息

这时候可以写一个consumer(消费者)客户端去读取队列中的消息

consumer的客户端不需要发布和创建队列,也就是除了声明队列和发布消息其它都是一致的。所以我们从返回一个新的频道开始写起

BasicGet方法返回类型是BasicGetResult,里面有一些基本信息,例如队列中有多少消息、当前交换机类型、当然还有我们最重要的消息 Body

//获取消息
var result = channel.BasicGet("firstTest", true);

var msg = Encoding.UTF8.GetString(result.Body);
//打印消息
Console.WriteLine(msg);

RabbitMQ代码第一步的更多相关文章

  1. 零代码第一步,做个添加数据的服务先。node.js + mysql

    node.js + mysql 实现数据添加的功能.万事基于服务! 增删改查之添加数据. 优点:只需要设置一个json文件,就可以实现基本的添加功能,可以视为是零代码. 添加数据的服务实现的功能: 1 ...

  2. PySpark初级教程——第一步大数据分析(附代码实现)

    概述 数据正以前所未有的速度与日俱增 如何存储.处理和使用这些数据来进行机器学习?spark正可以应对这些问题 了解Spark是什么,它是如何工作的,以及涉及的不同组件是什么 简介 我们正在以前所未有 ...

  3. Mirantis MCP 1.0:OpenStack 和 Kubernetes 整合的第一步

    1.前言 Mirantis 公司在2014年9月14日宣布收购 TCPCloud,然后宣布在2017年第一季度会推出全新的私有云产品.从那时候开始,我就一直满怀期待.终于,今年4月19日,Mirant ...

  4. 开发thinkphp的第一步就是给Application目录(不包括其下的文件)777权限, 关闭selinux

    开发thinkphp的时候, 总是会出现各种个样 的奇怪的毛病, 比如: 说什么Application目录不可写, 比如: 说什么 _STORAGE_WRITE_ERROR, 不能生成 Runtime ...

  5. Scala的第一步

    第一步:学习使用Scala解释器 开始Scala最简单的方法是使用Scala解释器,它是一个编写Scala表达式和程序的交互式“shell”.在使用Scala之前需要安装Scala,可以参考 Firs ...

  6. 重制AdvanceWars第一步 -- 搞定地图

    首先来聊下高级战争吧Advance Wars,由任天堂旗下的Intelligent Systems开发的战棋游戏.初作诞生于GBA上,后来继续跟进了高战2黑洞崛,而后在下一代掌机DS上也出了三代续作高 ...

  7. 005.TCP--拼接TCP头部IP头部,实现TCP三次握手的第一步(Linux,原始套接字)

    一.目的: 自己拼接IP头,TCP头,计算效验和,将生成的报文用原始套接字发送出去. 若使用tcpdump能监听有对方服务器的包回应,则证明TCP报文是正确的! 二.数据结构: TCP首部结构图: s ...

  8. Theano2.1.2-基础知识之第一步:代数

    来自:http://deeplearning.net/software/theano/tutorial/adding.html Baby Steps - Algebra 一.两个标量相加 在学习the ...

  9. 仿造slither.io第一步:先画条蛇

    前言 最近 slither.io 貌似特别火,中午的时候,同事们都在玩,包括我自己也是玩的不亦乐乎. 好久好久没折腾过canvas相关的我也是觉得是时候再折腾一番啦,所以就试着仿造一下吧.楼主也没写过 ...

随机推荐

  1. 常用hadoop web

    http://localhost:50070 Hadoop服务 http://localhost:8088/ 集群中的所有应用程序 http://localhost:16010 hbase

  2. 【有人@我】Android中高亮变色显示文本中的关键字

    应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助, ...

  3. Android开发环境部署

    引言   在windows系统中安装Android的开发环境,将分为五个步骤来完成: 第一步:安装JDK 第二步:配置Windows上JDK的变量环境 第三步: 下载安装Eclipse 第四步:下载安 ...

  4. MPLS基础

    1.1  MPLS简介 MPLS(Multiprotocol Label Switching,多协议标签交换)是一种新兴的IP骨干网技术.MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三 ...

  5. 判断移动端js代码

    var ua=navigator.userAgent.toLowerCase(); var contains=function (a, b){ if(a.indexOf(b)!=-1){return ...

  6. 1011MySQL Query Cache学习笔记

    转自:http://blog.chinaunix.net/uid-16844903-id-321156.html 测试环境 MySQL 5.5 innodb_version 1.1.6 MySQL Q ...

  7. 【BZOJ 3150】新Nim游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3105 并不会QwQ 为什么贪心是正确的. 向小神请教了一个弱智问题(小神好神啊OTZ) 然后就写了一 ...

  8. 【CodeVS 3289】【NOIP 2013】花匠

    http://codevs.cn/problem/3289/ dp转移,树状数组维护前缀max和后缀max进行优化,$O(nlogn)$. #include<cstdio> #includ ...

  9. 模板题 codevs 1993 草地排水 想学习的请看链接

    不能再水的题了. Dinic算法,比EK更快. 想要学习请看链接   https://comzyh.com/blog/archives/568/ 并附上我的模板(其实和comzyh大神的一样) #in ...

  10. 网页端压缩解压缩插件JSZIP库的使用

    JSZIP这个库支持在网页端生成zip格式的文件,  官方网站是:http://stuk.github.io/jszip/ 官方网站的DEMO如下: <!DOCTYPE html> < ...