• 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

  • 相关阅读:
    排列组合算法
    C++内存管理——堆&&栈
    编程之美——1.2 中国象棋将帅问题
    Gentoo: fcitx的安装
    Gentoo NTFS USB盘有写权限
    Gentoo U盘无法自动挂载,打开报告Not Authorized,xfce只有logout,suspend/shutdown灰化等问题解决方法
    Kernel: 打开CONFIG_EMBEDDED从而使更多的kernel option可以更改
    Gentoo Enable framebuffer console (没有安装X,KDE的时候)
    转载:Gentoo和Ubuntu包管理命令对比集
    Gentoo Rebuild virtualboxmodules when kernel is updated
  • 原文地址:https://www.cnblogs.com/LiangSW/p/6166471.html
Copyright © 2020-2023  润新知