
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);
}
消费端:
- //创建一个连接工厂
- ConnectionFactory factory = new ConnectionFactory()
- {
- HostName = "192.168.1.63",
- UserName = "hbadmin",
- Password = "hbadmin"
- };
- //创建一个连接
- using (var conntion = factory.CreateConnection())
- {
-
- //创建channe
- using (var channe = conntion.CreateModel())
- {
-
-
- //创建交换机(直接形交换机) (已有)
- channe.ExchangeDeclare("myheadersexchange", ExchangeType.Headers, true, false
-
-
-
- //创建队列
- //姓名,是否持久化,是否是专有的,是否自动删除,
- //当有很多个队列同时在获取数据时
- channe.QueueDeclare("myheadersqueue1", true, false, false, null);
-
- var dic = new Dictionary<string, object>();
- dic.Add("x-match", "any");
- //dic.Add("x-match", "all");
- dic.Add("username", "jack");
- dic.Add("password", "12345");
-
- //交换机绑定队列
- channe.QueueBind("myheadersqueue1", "myheadersexchange", string.Empty, dic);
- //应当用到事件
- {
- var consumer = new EventingBasicConsumer(channe);
- consumer.Received += (sender, e) =>
- {
- string msg = Encoding.UTF8.GetString(e.Body);
- Console.WriteLine(msg);
- };
- //执行加载的事件
- channe.BasicConsume("myheadersqueue1", true, consumer);
- Console.WriteLine("consumerl端启动完毕!!!");
- }
- Console.Read();
- }
- }
数据服务端:
- ConnectionFactory factory = new ConnectionFactory()
- {
- HostName = "192.168.1.63",
- UserName = "hbadmin",
- Password = "hbadmin"
- };
- //创建一个连接
- using (var conntion = factory.CreateConnection())
- {
-
- //创建channe
- using (var channe = conntion.CreateModel())
- {
- var properties = channe.CreateBasicProperties();
- properties.Headers = new Dictionary<string,object>();
- properties.Headers.Add("username", "jack");
- properties.Headers.Add("password", "123");
-
- for (int i = 0; i < 100; i++)
- {
- var qmsg = $"{i}:你好";
- //消息
- var msg = Encoding.UTF8.GetBytes(qmsg);
-
- //发布消息
- channe.BasicPublish("myheadersexchange", routingKey: string.Empty, basicProperties: properties, body: msg);
-
- }
- Console.Read();
- }
- }
当把消费端改为any时:
当把消费端改为all时:
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
635
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术