tnblog
首页
视频
资源
登录

rabbitmq官网上六大版块之二(Direct类型交换机通过routingKey分类型输出)

5534人阅读 2019/5/26 11:25 总访问:3465224 评论:0 收藏:0 手机
分类: RabbitMq

其实rabbitmq,老师都说得差不多了,下面是老师的连接。

http://www.tnblog.net/aojiancc2/article/UserCategory/134



官网教程连接:https://www.rabbitmq.com/getstarted.html


p表示交换机

中间红色的表示数据

c1,c2表示输出的队列

这图表示交换机中把数据分不同类型的队列进行输出!


  1. 实验准备


类型:routingKey 

交换机:myexchange

队列:log_eles,log_error


1,log_eles队列的代码


(1)如下代码可以看见我对这个队列循环创建了三个类型:"info", "debug", "warning" 


(2)然后是EventingBasicConsumer添加事件获取输出消息

(3)最后是BasicConsume开启事件

(2)与(3)之间的好处在于获取数据较多且队列较多时rabbitmq将会自动优化计算方式

  1. ConnectionFactory factory = new ConnectionFactory()
  2. {
  3.     HostName = "192.168.1.63",
  4.     UserName = "hbadmin",
  5.     Password = "hbadmin"
  6. };
  7. //创建一个连接
  8. using (var conntion = factory.CreateConnection())
  9. {
  10.     //创建channe
  11.     using (var channe = conntion.CreateModel())
  12.     {
  13.         //创建交换机(直接形交换机) (已有)
  14.         channe.ExchangeDeclare("myexchange", ExchangeType.Direct, truefalsenull)
  15.         //创建队列
  16.         //姓名,是否持久化,是否是专有的,是否自动删除,
  17.         //当有很多个队列同时在获取数据时
  18.         channe.QueueDeclare("log_eles"truefalsefalsenull);
  19.         var arr = new string[3] { "info""debug""warning" };
  20.         //交换机绑定队列
  21.         for (int i = 0; i < arr.Length; i++)
  22.         {
  23.             //将 error 绑定一下
  24.             channe.QueueBind("log_eles""myexchange", arr[i], null);
  25.         }
  26.         //应当用到事件
  27.         {
  28.             //官网案例:https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html
  29.             //可以优化计算压力
  30.             var consumer = new EventingBasicConsumer(channe);
  31.             consumer.Received += (sender, e) =>
  32.             {
  33.                 string msg = Encoding.UTF8.GetString(e.Body);
  34.                 Console.WriteLine(msg);
  35.             };
  36.             //执行加载的事件
  37.             channe.BasicConsume("log_eles"true, consumer);
  38.         }
  39.         Console.ReadKey();
  40.         Console.Read();
  41.     }
  42. }


2,log_error队列的代码


(1)如下代码log_error队列只有一种类型: error

  1. channe.ExchangeDeclare("myexchange", ExchangeType.Direct, truefalsenull);
  2. //当有很多个队列同时在获取数据时
  3. channe.QueueDeclare("log_error"truefalsefalsenull);
  4. //将 error 绑定一下
  5. channe.QueueBind("log_error""myexchange","error",null);
  6. //应当用到事件
  7. {
  8.     //官网案例:https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html
  9.     //可以优化计算压力
  10.     var consumer = new EventingBasicConsumer(channe);
  11.     consumer.Received += (sender, e) =>
  12.     {
  13.         string msg = Encoding.UTF8.GetString(e.Body);
  14.         Console.WriteLine(msg);
  15.     };
  16.     //执行加载的事件
  17.     channe.BasicConsume("log_error"true, consumer);
  18. }

3进行添加数据


(1)添加100条数据,通过routingKey进行不同类型的添加

  1. //创建交换机(直接形交换机) (已有)
  2. channe.ExchangeDeclare("myexchange", ExchangeType.Direct, truefalsenull);
  3. //创建队列
  4. //姓名,是否持久化,是否是专有的,是否自动删除,
  5. for (int i = 0; i < 100; i++)
  6. {
  7.     //消息
  8.     var qmsg = $"{i}:你好";
  9.     var msg = Encoding.UTF8.GetBytes(qmsg);
  10.     var level = i % 13 == 0 ? "info" : "error";
  11.     //发布消息
  12.     channe.BasicPublish("myexchange", routingKey: level, basicProperties: null, body: msg);
  13. }
  14. Console.Read();


  1. 下面开始实验


1。先创建队列绑定类型与交换机,订阅事件

2。再添入数据


此时可以清楚的看见通过不同的类型对应不同的队列进行输出!

好,我们再来看看,交换机绑定类型的情况


翻译了,哈哈哈


可以发现交换绑定了四种类型,同时也能看见其类型所对应的队列!



本期就这样!


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

​Windows下安装rabbitmq

跳过舞,祝大家新年快乐哇!1、下载安装erlang因为rabbitmq是基于erlang实现的所以需要先安装erlang打开网址https://www.er...

net core使用消息队列rabbitmq

使用NuGet下载rabbitmq客户端工具Install-Package RabbitMQ.Client -Version 3.6.5生产消息staticvoidMain(string[]args) ...

rabbitmq常用命令

rabbitmqctl environment:查询环境什么的例如这里可以看到rabbitmq的连接端口是5672,有时间我们想知道端口有没有改起什么...

修改rabbitmq的连接端口

rabbitmq的默认连接端口是5672,如果要修改的话,可以通过配置文件修改当然一般情况下都会遇到坑默认配置文件地址:安装目...

消息队列rabbitmq介绍

消息队列的一般作用 异步调用,延迟处理 应用解耦 流量消峰,处理高并发,秒杀等 说白了,消息队列就是一方生产消息,一方...

rabbitmq六大版块之三(Fanout类型交换机相同数据多逼格处理)

Fanout类型交换机的特点是:同样的数据分发给每一个自己所绑定的队列,每个队列可以按照自己的需求对数据进行不同的处理【...

rabbitmq中Header类型交换机的处理(and与or的处理)

headers类型交换机是通过 muliple attributes 代替 routing key.x-match [all/any]all: 所有地方header头信息必须匹配any:...

springboot整合rabbitmq

Windows下安装RabbitMQ:http://www.tnblog.net/aojiancc2/article/details/232消息队列rabbitmq介绍:http://www.tnblog.n...

Docker 部署rabbitmq集群

Docker 部署RabbitMq集群[TOC] 镜像环境docker pull rabbitmq:3-management 镜像后面带management是带web管理界面...

rabbitmq 命令行运用

RabbitMq 命令行运用[TOC] RabbitMQ是一个开源的多协议消息传递代理。 描述 rabbitmqctl是用于管理RabbitMQ服务器节点...

rabbitmq 对配置文件的操作

RabbitMq 对配置文件的操作[TOC] 从UI界面中找到配置文件的位置 查看我们的配置文件 在这里我已经对原来的配置文件做了...

.netcore3.1 rabbitmq 简单运用与相关方法的介绍

.netcore3.1 RabbitMq 简单运用与相关方法的介绍[TOC] 在这里我将使用简单的生产—-&gt;加入队列—-&gt;消费,做一个简...

.netcore3.1 rabbitmq 工作队列轮询与确认消息

.netcore3.1 RabbitMq 工作队列轮询与确认消息[TOC] https://www.rabbitmq.com/confirms.htmlhttps://www.rabbitmq.com/tu...

.netcore3.1 rabbitmq Routing的应用

.netcore3.1 RabbitMq Routing的应用[TOC] 在前面很多文章中都用到了routingKey参数但并没有细说它的用途。在这之前我可...

.netcore3.1 rabbitmq Fanout交换机

.netcore3.1 RabbitMq Fanout交换机[TOC] 在前面我们有提到交换机但都是用的普通的交换机(direct),交换机在Rabbitmq中有...
这一世以无限游戏为使命!
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术