zoukankan      html  css  js  c++  java
  • RabbitMQ direct类型的Exchange

    就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中。

    本篇文章介绍的direct类型就是指定将消息定向发送到哪个队列中。

    direct,顾名思义,就是直接的意思。那我就直接开始上代码了!

    //首先创建一个连接工厂对象
    var factory = new ConnectionFactory() { HostName = "localhost", UserName = "yyt", Password = "yyt888888",VirtualHost="log" };
    //然后使用工厂对象创建一个TCP连接
    using (var connection = factory.CreateConnection()){
        //在当前连接上创建一根通信的虚拟管道
        using (var channel = connection.CreateModel()) {
            //声明一个交换机
            channel.ExchangeDeclare("e.log",  //交换机名称
                                "direct"); //交换机类型
            //声明一个队列
            channel.QueueDeclare(queue: "q.log.info", //队列名称
                                 durable: false,      //当前队列是否持久化
                                 exclusive: false,    //是否是私有队列
                                 autoDelete: false,   //该队列在最后一个consumer断开之后是否自动删除
                                 arguments: null);    //其他配置参数
            //将该队列绑定到交换机,并设置RoutingKey=log.info,以便交换机能通过RoutingKey找到该队列
            channel.QueueBind("q.log.info", //队列名称
                              "e.log",      //交换机名称
                              "log.info");  //自定义的RoutingKey
    
            //生成二进制消息
            var body = Encoding.UTF8.GetBytes("hello world!");
            //将二进制消息通过交换机发送到队列中
            channel.BasicPublish(exchange: "e.log",      //交换机
                                 routingKey: "log.info", //RoutingKey
                                 basicProperties: null,  //先让它为空
                                 body: body);            //发送的消息(二进制数据)
            
        }
    }

    运行程序后,我们到RabbitMQ的web管理界面去看看。

    在浏览器地址栏中输入:localhost:15672

    输入用户名和密码进入后,在Exchange栏可以看到如下画面:

    证明创建了一个direct类型的交换机(e.log),点进去看看。

    可以看到该交换机绑定了名为q.log.info的队列,并生成了一个名为log.info的RoutingKey。以后该交换机就可以通过log.info找到队列q.log.info,并把消息储存在该队列中。

    接下来我们点开Queue标签看看。

    可以看到有一个名为q.log.info的队列,里面存了一个消息。

    点击这个队列名称,让我们来看看消息的内容是什么?

    点击那个'Get Message(s)'按钮。看到么,Payload的内容就是我们发送的消息。

    操作演示成功!

    最后让我们喊出我们的口号:捉住那只兔子,炖了它!

  • 相关阅读:
    PAT (Advanced Level) 1086. Tree Traversals Again (25)
    PAT (Advanced Level) 1085. Perfect Sequence (25)
    PAT (Advanced Level) 1084. Broken Keyboard (20)
    PAT (Advanced Level) 1083. List Grades (25)
    PAT (Advanced Level) 1082. Read Number in Chinese (25)
    HDU 4513 吉哥系列故事――完美队形II
    POJ Oulipo KMP 模板题
    POJ 3376 Finding Palindromes
    扩展KMP
    HDU 2289 Cup
  • 原文地址:https://www.cnblogs.com/williamwsj/p/8093564.html
Copyright © 2011-2022 走看看