Setup Postgres, Mongodb and Redis on Heroku

Below is the instruction to setup Postgres, Mongodb and Redis on Heroku:

Setup Postgres

heroku addons:add heroku-postgresql:dev

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
import java.net.URI;

/**
 * @author Thys Michels
 */
@Configuration
@Profile("default")
public class LocalDataSourceConfiguration implements DataSourceConfiguration {
	
	@Bean
        public DataSource dataSource() throws Exception {
    	   final URI dbUrl = new URI(System.getenv("DATABASE_URL"));
           final DriverManagerDataSource dataSource = new DriverManagerDataSource();
           dataSource.setDriverClassName("org.postgresql.Driver");
           dataSource.setUrl("jdbc:postgresql://" + dbUrl.getHost() + dbUrl.getPath());
           dataSource.setUsername(dbUrl.getUserInfo().split(":")[0]);
           dataSource.setPassword(dbUrl.getUserInfo().split(":")[1]);
        return dataSource;
    }
}

Setup MongoDB

heroku addons:add mongohq:sandbox

package com.example.mongo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

import com.mongodb.Mongo;
import com.mongodb.MongoURI;

@Configuration
@Profile("default")
public class LocalMongoConfiguration {
	
	    @Bean
	    public MongoDbFactory mongoDbFactory1(Environment environment) throws Exception {
	    	MongoURI mongoURI = new MongoURI(System.getenv("MONGOHQ_URL"));
	        Mongo mongo = new Mongo(mongoURI);
	        return new SimpleMongoDbFactory(mongo, mongoURI.getDatabase());
	    }
}

Setup Redis

heroku addons:add rediscloud:20

package com.example.redis;

import java.net.URI;
import java.net.URISyntaxException;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;

import redis.clients.jedis.Protocol;

@Configuration
@Profile("default")
public class LocalRedisConfiguration {
	
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
    	
		try {
			URI redisUri = new URI(System.getenv("REDISCLOUD_URL"));
			JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
			redisConnectionFactory.setHostName(redisUri.getHost());
			redisConnectionFactory.setPort(redisUri.getPort());
			redisConnectionFactory.setTimeout(Protocol.DEFAULT_TIMEOUT);
			redisConnectionFactory.setPassword(redisUri.getUserInfo().split(":",2)[1]);
			
                        return redisConnectionFactory;
		} catch (URISyntaxException e) {
			e.printStackTrace();
			return null;
		}
    }
}

Leave a Comment

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s