标题 :

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. DOS的FOR命令用法总结

    鉴于dos自带的关于for命令的帮助信息看起来太简单,自己总结了一下,并增加了必要的实例,以备日后自己查阅.其中一些地方可能存在理解错误,敬请指出. [转发请注明出处]

  2. 企业项目迁移go-zero全攻略(一)

    作者:Mikael 最近发现 golang 社区里出了一个新兴的微服务框架.看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务:同时 core 中的工 ...

  3. 5V充12.6V三节锂电池,5V升压12.6V的电路图

    三串锂电池的充电电压是三串锂电池的最高电压值,就是12.6V了.5V充12.6V是5V给三串锂电池充电.如笔记本的USB口5V给三串锂电池充电,如5V的适配器或者手机充电器插上数据线给三串锂电池充电电 ...

  4. 转 Jmeter测试实践:文件下载接口

    Jmeter测试实践:文件下载接口   一 Jmeter步骤 1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求.根据接口文档进行配置. Basic ...

  5. TCP 延迟

    https://mp.weixin.qq.com/s/fKWJrDNSAZjLsyobolIQKw 直击案发现场!TCP 10倍延迟的真相是? 原创 蛰剑 阿里技术 2019-11-01      

  6. net.core.somaxconn net.ipv4.tcp_max_syn_backlog

    Linux参数-net.core.somaxconn与net.ipv4.tcp_max_syn_backlog_梁海江的博客-CSDN博客_net.ipv4.tcp_max_syn_backlog h ...

  7. error out of table range

    .

  8. Page (computer memory) Memory segmentation Page table 虚拟地址到物理地址的转换

    A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described ...

  9. ctsc选课

    CTSC 1997 大学实行学分制.每门课程都有一定的学分,学生只要选修了这门课并通过考核就能获得相应学分.学生最后的学分是他选修各门课的学分总和. 每个学生都要选择规定数量的课程.有些课程可以直接选 ...

  10. EasyUI框架

    使用EasyUI框架时,需要导入3个包在项目js文件夹之中. 在项目之中,每次需先引入相关文件: <!--引入jquery--> <script src="../js/jq ...