Example usage for org.springframework.amqp.core AbstractExchange setIgnoreDeclarationExceptions

List of usage examples for org.springframework.amqp.core AbstractExchange setIgnoreDeclarationExceptions

Introduction

In this page you can find the example usage for org.springframework.amqp.core AbstractExchange setIgnoreDeclarationExceptions.

Prototype

public void setIgnoreDeclarationExceptions(boolean ignoreDeclarationExceptions) 

Source Link

Document

Set to true to ignore exceptions such as mismatched properties when declaring.

Usage

From source file:org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor.java

private void declareExchangeAndBinding(QueueBinding binding, String queueName) {
    org.springframework.amqp.rabbit.annotation.Exchange bindingExchange = binding.exchange();
    String exchangeName = resolveExpressionAsString(bindingExchange.value(), "@Exchange.exchange");
    Assert.isTrue(StringUtils.hasText(exchangeName), "Exchange name required; binding queue " + queueName);
    String exchangeType = resolveExpressionAsString(bindingExchange.type(), "@Exchange.type");
    String routingKey = resolveExpressionAsString(binding.key(), "@QueueBinding.key");
    Exchange exchange;//from   ww w  . jav  a 2 s.co  m
    Binding actualBinding;
    if (exchangeType.equals(ExchangeTypes.DIRECT)) {
        exchange = directExchange(bindingExchange, exchangeName);
        actualBinding = new Binding(queueName, DestinationType.QUEUE, exchangeName, routingKey,
                resolveArguments(binding.arguments()));
    } else if (exchangeType.equals(ExchangeTypes.FANOUT)) {
        exchange = fanoutExchange(bindingExchange, exchangeName);
        actualBinding = new Binding(queueName, DestinationType.QUEUE, exchangeName, "",
                resolveArguments(binding.arguments()));
    } else if (exchangeType.equals(ExchangeTypes.TOPIC)) {
        exchange = topicExchange(bindingExchange, exchangeName);
        actualBinding = new Binding(queueName, DestinationType.QUEUE, exchangeName, routingKey,
                resolveArguments(binding.arguments()));
    } else if (exchangeType.equals(ExchangeTypes.HEADERS)) {
        exchange = headersExchange(bindingExchange, exchangeName);
        actualBinding = new Binding(queueName, DestinationType.QUEUE, exchangeName, routingKey,
                resolveArguments(binding.arguments()));
    } else {
        throw new BeanInitializationException("Unexpected exchange type: " + exchangeType);
    }
    AbstractExchange abstractExchange = (AbstractExchange) exchange;
    abstractExchange.setInternal(resolveExpressionAsBoolean(bindingExchange.internal()));
    abstractExchange.setIgnoreDeclarationExceptions(
            resolveExpressionAsBoolean(bindingExchange.ignoreDeclarationExceptions()));
    ((AbstractDeclarable) actualBinding)
            .setIgnoreDeclarationExceptions(resolveExpressionAsBoolean(binding.ignoreDeclarationExceptions()));
    ((ConfigurableBeanFactory) this.beanFactory).registerSingleton(exchangeName + ++this.increment, exchange);
    ((ConfigurableBeanFactory) this.beanFactory)
            .registerSingleton(exchangeName + "." + queueName + ++this.increment, actualBinding);
}