tnblog
首页
视频
资源
登录

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

7851人阅读 2019/6/3 18:12 总访问:3470540 评论:0 收藏:0 手机
分类: RabbitMq

headers类型交换机

是通过 muliple attributes 代替 routing key.

x-match [all/any]

     all: 所有地方header头信息必须匹配

     any:只要有一个匹配就ok了

说白了就是||和&&的关系


代码】】

any的写法:

if(name=="jack" || age==20)

{

  queue1.add(msg);

}

all的写法:

if(name=="jack" && age==20)

{

  queue2.add(msg);

}

消费端:

  1. //创建一个连接工厂
  2. ConnectionFactory factory = new ConnectionFactory()
  3. {
  4.     HostName = "192.168.1.63",
  5.     UserName = "hbadmin",
  6.     Password = "hbadmin"
  7. };
  8. //创建一个连接
  9. using (var conntion = factory.CreateConnection())
  10. {
  11.     //创建channe
  12.     using (var channe = conntion.CreateModel())
  13.     {
  14.         //创建交换机(直接形交换机) (已有)
  15.         channe.ExchangeDeclare("myheadersexchange", ExchangeType.Headers, truefalse
  16.         //创建队列
  17.         //姓名,是否持久化,是否是专有的,是否自动删除,
  18.         //当有很多个队列同时在获取数据时
  19.         channe.QueueDeclare("myheadersqueue1"truefalsefalsenull);
  20.         var dic = new Dictionary<stringobject>();
  21.          dic.Add("x-match""any");
  22.         //dic.Add("x-match", "all");
  23.         dic.Add("username""jack");
  24.         dic.Add("password""12345");
  25.         //交换机绑定队列
  26.         channe.QueueBind("myheadersqueue1""myheadersexchange"string.Empty, dic);
  27.         //应当用到事件
  28.         {
  29.             var consumer = new EventingBasicConsumer(channe);
  30.             consumer.Received += (sender, e) =>
  31.             {
  32.                 string msg = Encoding.UTF8.GetString(e.Body);
  33.                 Console.WriteLine(msg);
  34.             };
  35.             //执行加载的事件
  36.             channe.BasicConsume("myheadersqueue1"true, consumer);
  37.             Console.WriteLine("consumerl端启动完毕!!!");
  38.         }
  39.         Console.Read();
  40.     }
  41. }

数据服务端:

  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.         var properties = channe.CreateBasicProperties();
  14.         properties.Headers = new Dictionary<string,object>();
  15.         properties.Headers.Add("username""jack");
  16.         properties.Headers.Add("password""123");
  17.         for (int i = 0; i < 100; i++)
  18.         {
  19.             var qmsg = $"{i}:你好";
  20.             //消息
  21.             var msg = Encoding.UTF8.GetBytes(qmsg);
  22.             //发布消息
  23.             channe.BasicPublish("myheadersexchange", routingKey: string.Empty, basicProperties: properties, body: msg);
  24.         }
  25.         Console.Read();
  26.     }
  27. }

当把消费端改为any时:

当把消费端改为all时:


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

评价

​Windows下安装<font color='#ff5555'>rabbitmq

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

net core使用消息队列<font color='#ff5555'>rabbitmq

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

<font color='#ff5555'>rabbitmq常用命令

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

修改<font color='#ff5555'>rabbitmq的连接端口

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

消息队列<font color='#ff5555'>rabbitmq介绍

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

<font color='#ff5555'>rabbitmq官网上六大版块之二(Direct类型交换机通过routingKey分类型输出)

其实rabbitmq,老师都说得差不多了,下面是老师的连接。http://www.tnblog.net/aojiancc2/article/UserCategory/134官网教...

<font color='#ff5555'>rabbitmq六大版块之三(Fanout类型交换机相同数据多逼格处理)

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

springboot整合<font color='#ff5555'>rabbitmq

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

Docker 部署<font color='#ff5555'>rabbitmq集群

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

<font color='#ff5555'>rabbitmq 命令行运用

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

<font color='#ff5555'>rabbitmq 对配置文件的操作

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

.netcore3.1 <font color='#ff5555'>rabbitmq 简单运用or='#ff5555'>与相关方法的介绍

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

.netcore3.1 <font color='#ff5555'>rabbitmq 工作队列轮询or='#ff5555'>与确认消息

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

.netcore3.1 <font color='#ff5555'>rabbitmq Routing的应用

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

.netcore3.1 <font color='#ff5555'>rabbitmq Fanout交换机

.netcore3.1 RabbitMq Fanout交换机[TOC] 在前面我们有提到交换机但都是用的普通的交换机(direct),交换机在Rabbitmq中有...
这一世以无限游戏为使命!
排名
2
文章
635
粉丝
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
欢迎加群交流技术