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);

最新文章

  1. Centos7 关闭防火墙
  2. Oracle 外连接和 (+)号的用法
  3. opencv的学习笔记3
  4. Android AlarmManager类的应用(实现闹钟功能)
  5. Ubuntu 下 JDK+Tomcat+MySql 环境的搭建
  6. js获取url传递参数(转的,原作不详)
  7. Kendo UI开发教程(20): Kendo MVVM 数据绑定(九) Text
  8. PV(访问量)、UV(独立访客)、IP(独立IP) (转)
  9. 基于文本图形(ncurses)的文本搜索工具 ncgrep
  10. STS搭建SpringBoot项目
  11. 英语口语练习系列-C07-谈女孩
  12. centos7下安装pip以及mysql等软件
  13. Struts2基础2
  14. Oracle数据库-sqlplus命令下出现SP2-0640: Not connected
  15. Frameworks(不定时更新)
  16. Hello Vizhub
  17. Apache Directory Studio
  18. eclipse使用技巧的网站收集——转载(三)
  19. 【BZOJ3007】拯救小云公主 二分+几何+对偶图
  20. ORACLE 8i 遇到报错:ORA-01631: max # extents (505) reached in table

热门文章

  1. lecture6-mini批量梯度训练及三个加速的方法
  2. 3到6年的.NETer应该掌握哪些知识?
  3. 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)
  4. LCA倍增算法的错误与模板
  5. MATLAB中白噪声的WGN和AWGN函数的使用
  6. rabbitmq 相关方法
  7. 现代软件工程 第十六章 【IT 行业的创新】练习与讨论
  8. 1025WHERE执行顺序以及MySQL查询优化器
  9. 1010每次备份我的MySQL数据库
  10. springMvc请求的跳转和传值