【问题标题】:Check if the Exchange with a specified name exist in rabbitmq检查rabbitmq中是否存在指定名称的Exchange
【发布时间】:2014-10-01 20:10:56
【问题描述】:

我有一个场景,其中有一个应用程序正在生成不同类型的有趣事件(不是命令)。生产者应用程序不关心事件由谁以及如何处理。

我正在实现一个消费者,他将监听一些已发布的事件并适当地处理它们。消费者应用程序想要检查发布者应用程序交换是否存在。那么,问题是如何利用spring提供的rabbit/AMQP库来检查是否存在特定名称的交换?

我想,这可以通过尝试将队列绑定到不存在的交换器来间接处理,从而导致异常。我正在寻找更好的方法来处理这种情况。

【问题讨论】:

    标签: spring rabbitmq amqp spring-amqp spring-rabbit


    【解决方案1】:

    使用被动声明和RabbitTemplate;类似...

    final String exchange = "foo";
    boolean exists rabbitTemplate.execute(new ChannelCallback<DeclareOk>() {
            @Override
            public DeclareOk doInRabbit(Channel channel) throws Exception {
                try {
                    return channel.exchangeDeclarePassive(exchange);
                }
                catch (Exception e) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Exchange '" + exchange + "' does not exist");
                    }
                    return null;
                }
            }
        }) != null;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2023-04-08
      • 2017-10-19
      • 1970-01-01
      相关资源
      最近更新 更多