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