当前位置: 移动技术网 > IT编程>开发语言>.net > EasyNetQ WithTopic过滤失效的解决方案

EasyNetQ WithTopic过滤失效的解决方案

2018年03月12日  | 移动技术网IT编程  | 我要评论

江西永新打人事件,阿凡龙官网,hb彼女

RabbitMQ原理及教程:

EasyNetQ是什么以及常见用法这里都不做讲解。可以参考这篇博文:

这里主要来谈谈EasyNetQ中WithTopic方法中的一个容易浪费大量时间的点。

使用EasyNetQ的Subscribe方法后,再使用SubscribeWithTopic方法,你可能会发现无论Routing Key(SubscribeWithTopic中的第三个参数)写什么东西都没用,不管你的Routing key和发送者的Routing Key一样或者不一样,接收者统统都能收得到,即WithTopic的过滤功能失效了。这是为什么呢?

这时候,只要你打开RabbitMQ的web管理后台的队列面板,

(http://localhost:15672/#/queues ,开不了的去rabbitmq-server的安装目录的sbin下右键打开命令行,运行 

.\rabbitmq-plugins.bat enable rabbitmq_management

来启动web管理后台。)

点开新创建出来的队列,点开bindings下拉菜单,如果你看到Routing key这一栏的第一项是“#”,意味着之后添加的所有Routing key都失效了。#代表接受所有。每次运行Subscribe都会自动加上“#”过滤规则并且置顶。

解决方案有:

1、手动删除。"#"那一项点击unbind按钮即可。之后如果使用了Subscribe后还想改成SubscribeWithTopic就必须再手动删一次

2、利用代码删除。

            var bus = RabbitHutch.CreateBus(connectionString);
IAdvancedBus advancedBus = bus.Advanced; IBinding bind = advancedBus.Bind(new Exchange("Model.Message:Model(交换机名)"), new Queue("Model.Message:Model_id1(队列名)",false), "#" ); advancedBus.BindingDelete(bind);

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网