标题 :

4.Direct交换机之使用指定routingkey完成日志记录场景

目录 :

RabbitMQ

序号 :

4

        const string logOthersQueueName = "log-queue-others";





var connection = connectionFactory.CreateConnection();

var channel = connection.CreateModel();



//设置服务质量

channel.BasicQos(0, 1, false);



//定义一个类型为Direct的交换机

channel.ExchangeDeclare(exchangeName, ExchangeType.Direct, true, false, null);





//定义一个队列,将用于存放日志级别为 Warn,Info,Debug的日志

channel.QueueDeclare(queue: logOthersQueueName, durable: true, exclusive: false, autoDelete: false, arguments: null);







//将debug,info,warn 都绑定到log-queue-others"队列中

var routingKeys = new[] { "info", "warn", "debug" };

foreach (var routingKey in routingKeys)

{

channel.QueueBind(logOthersQueueName, exchangeName, routingKey, null);

}



//定义消费者

var consumer = new EventingBasicConsumer(channel);

consumer.Received += (model, ea) =>

{

var body = ea.Body;

var message = Encoding.UTF8.GetString(body);

Console.WriteLine(" [x] Received {0} " + DateTime.Now, message);

channel.BasicAck(ea.DeliveryTag, false);

};

channel.BasicConsume(queue: logOthersQueueName, false, consumer: consumer);





Console.WriteLine(" Press [enter] to exit.");

Console.ReadLine();

}

}

}

- 这里我们把log-queue-others队列绑定到了交换机上,并指定了routingKey为info,warn和debug.这样会产生三组路由.info,warn,debug三种级别的日志均被路由到log-queue-others队列上
- 按照预期设计,将消费发送序号!=10的倍数的日志.
![](https://www.showdoc.cc/server/api/common/visitfile/sign/0461d279c67986a58dce83d93c7db102?showdoc=.jpg)

###引用链接
https://www.rabbitmq.com/tutorials/tutorial-four-dotnet.html

4.Direct交换机之使用指定routingkey完成日志记录场景的更多相关文章

  1. rabbitmq AmqpClient 使用Direct 交换机投递与接收消息,C++代码示例

    // 以DIRECT 交换机和ROUTING_KEY的方式进行消息的发布与订阅 // send // strUri = "amqp://guest:guest@192.168.30.11:8 ...

  2. RabbitMQ六:通过routingkey模拟日志

    序言 本章文章进入深入了解RabbiMQ,平时项目中我们经常用到记录日志,常见的不外乎:Info.debug.warn.Error.     情境进入:先简单说一下我们需求,我们开发过程中会遇到很多日 ...

  3. CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法

    CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法 sed -n '/2016-11-02 15:00:/,/2016-11-02 15:05:/p' catalina.out > ...

  4. HBase指定大量列集合的场景下并发拉取数据时卡住的问题排查

    最近遇到一例,HBase 指定大量列集合的场景下,并发拉取数据,应用卡住不响应的情形.记录一下. 问题背景 退款导出中,为了获取商品规格编码,需要从 HBase 表 T 里拉取对应的数据. T 对商品 ...

  5. gotty---用来作为k8s的web terminal,通过参数读取指定pod的日志输出

    不要重复造轮子,我觉得这个方案比较适合现在的情况. 我们知道,如果手工查看k8s里指定pod的日志输出,一般的方案如下: kubectl logs -f -n [namespace] [pod] -c ...

  6. Keepalived指定文件接收日志

    keepalived默认日志接收文件为/var/log/messages不方便查看,可以指定文件接收日志 修改配置文件/etc/sysconfig/keepalived KEEPALIVED_OPTI ...

  7. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录

    此为在网络上找来的,觉得很好! 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令来切割日志 ps -def | grep ...

  8. log4j设置,以及中文乱码,通过过滤器输出指定级别的日志,或者指定级别范围的日志

    配置文件为默认名字log4j.properties时,放在某个模块下的resources下即可,即使有多个模块的情况下,任意一个模块的resources下有这个默认名字的文件log4j.propert ...

  9. nginx不记录指定文件类型日志

    1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwa ...

随机推荐

  1. XSS类型,防御及常见payload构造总结

    什么是XSS? XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了. 最直接的例子:&l ...

  2. 攻防世界 - Web(一)

    baby_web: 1.根据题目提示,初始页面即为index,将1.php改为index.php,发现依然跳转成1.php,尝试修改抓包,出现如下回显, 2.在header中获取flag, flag: ...

  3. 配接Cisco设备

  4. 阿里云 CentOS7中搭建FTP服务器

    1配置 vsftpd-3.0.2-27.el7.x86_64 阿里云 centos 7.0 2 ftp工作模式 2.1 ftp通道 ftp工作会启动两个通道: 控制通道,数据通道 在ftp协议中,控制 ...

  5. (Oracle)预定义异常

    预定义异常: 为了 Oracle 开发和维护的方便,在 Oracle 异常中,为常见的异常码定义了对应的异常名称,称为预定义异常,常见的预定义异常有: 异常名称 异常码 描述 DUP_VAL_ON_I ...

  6. 聊一聊Axios与登录机制

    前言 因为HTTP是一个stateless的协议,服务器并不会保存任何关于状态数据. 所以需要登录功能让服务器在以后请求的过程中能够识别到你的身份,而不是每次发请求都要输入用户名和密码. 下面介绍一下 ...

  7. C段错误等调试

    本文参考 http://stackoverflow.com/questions/2179403/how-do-you-read-a-segfault-kernel-log-message和http:/ ...

  8. Git轻松入门1:本地仓库篇

    什么是Git 版本控制系统 首先我们要明白,什么是版本控制系统(version control systems)? 版本控制系统,顾名思义,就是能控制文件处于哪个版本的系统. e.g. 你在博客园里编 ...

  9. Web渗透-SQLmap

    Web渗透-SQLmap 一.sqlmap简介 1.1 sqlmap 参数解析 二.sqlmap自动化注入 2.4 提权操作 示例步骤: 1.获得当前数据库 2.获得数据库表 3.获得表的字段 4.获 ...

  10. shell循环字符串数组

    #!/bin/bash arr=("0" "1" "2" "3" "4" "5" ...