@Bean
  public CachingConnectionFactory rabbitConnectionFactory() {
    log.info("AMQP URL: {}", isBlank(amqpConnectionUri) ? "localhost:5672" : amqpConnectionUri);

    RabbitConnectionFactoryConfig config = uriToConnectionConfig(amqpConnectionUri);
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory(config.getHost());
    connectionFactory.setPort(config.getPort());

    if (config.getUsername() != null) {
      connectionFactory.setUsername(config.getUsername());
    }
    if (config.getPassword() != null) {
      connectionFactory.setPassword(config.getPassword());
    }
    if (config.getVirtualHost() != null) {
      connectionFactory.setVirtualHost(StringUtils.remove(config.getVirtualHost(), '/'));
    }

    return connectionFactory;
  }