RabbitMQ代码第一步

Hello RabbitMQ

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

Install-Package RabbitMQ.Client
image

 

安装完成后,就可以着手做一个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,而且有一条消息

image

 

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

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

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

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

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

 

image

 

image

posted @ 2016-12-12 23:48  liangshiwei  阅读(2176)  评论(0编辑  收藏  举报