public Exchange build() { AbstractExchange exchange; if (ExchangeTypes.DIRECT.equals(this.type)) { exchange = new DirectExchange(this.name, this.durable, this.autoDelete, getArguments()); } else if (ExchangeTypes.TOPIC.equals(this.type)) { exchange = new TopicExchange(this.name, this.durable, this.autoDelete, getArguments()); } else if (ExchangeTypes.FANOUT.equals(this.type)) { exchange = new FanoutExchange(this.name, this.durable, this.autoDelete, getArguments()); } else if (ExchangeTypes.HEADERS.equals(this.type)) { exchange = new HeadersExchange(this.name, this.durable, this.autoDelete, getArguments()); } else { exchange = new CustomExchange(this.name, this.type, this.durable, this.autoDelete, getArguments()); } exchange.setInternal(this.internal); exchange.setDelayed(this.delayed); exchange.setIgnoreDeclarationExceptions(this.ignoreDeclarationExceptions); exchange.setShouldDeclare(this.declare); if (!ObjectUtils.isEmpty(this.admins)) { exchange.setAdminsThatShouldDeclare(this.admins); } return exchange; }