• EasyNetQ WithTopic过滤失效的解决方案


    RabbitMQ原理及教程:http://www.cnblogs.com/AlvinLee/p/6141834.html

    EasyNetQ是什么以及常见用法这里都不做讲解。可以参考这篇博文:http://blog.csdn.net/hesi9555/article/details/70139346

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

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

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

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

    .
    abbitmq-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);
  • 相关阅读:
    Java GUI学习心得
    Kettle6.0表输入连接数据库
    理解javascript继承 Minoz
    理解作用域 Minoz
    深入理解javascript作用域链 Minoz
    JavaScript数组总结 Minoz
    收获2.css圆角总结 Minoz
    一次前端作业的收获 Minoz
    深入理解闭包 Minoz
    理解javascript原型与原型链 Minoz
  • 原文地址:https://www.cnblogs.com/axel10/p/8544619.html
Copyright © 2020-2023  润新知