dimanche 15 mars 2015

Embedded Redis tries to connect to real Redis server, resulting in an exception

I am trying to use embedded redis for my dev spring profile (I also have a cloud profile that connects to a real redis).


However, it seems that my embedded redis configuration tries to connect to the real redis.


Here is the error I get when I run the dev profile:



Caused by: redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
at redis.clients.jedis.Protocol.processError(Protocol.java:113)
at redis.clients.jedis.Protocol.process(Protocol.java:131)
at redis.clients.jedis.Protocol.read(Protocol.java:200)
at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:285)
at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:221)
at redis.clients.jedis.Connection.getMultiBulkReply(Connection.java:214)
at redis.clients.jedis.Jedis.configGet(Jedis.java:2758)
at org.springframework.data.redis.connection.jedis.JedisConnection.getConfig(JedisConnection.java:554)
... 19 more


This is because I have activated authentication on the real Redis server.


Here is my Spring configuration:



@Configuration
public class RedisConfiguration {

@Autowired
private RedisConnectionFactory redisConnectionFactory;

@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}


@Configuration
@EnableRedisHttpSession
@Profile({ Profiles.DEV, Profiles.TEST })
public class RedisDevTestSessionConfiguration extends AbstractCloudConfig {

@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new JedisConnectionFactory();
}

@Bean
public RedisServerBean redisServer() {
return new RedisServerBean();
}

class RedisServerBean implements InitializingBean, DisposableBean {
private RedisServer redisServer;

public void afterPropertiesSet() throws Exception {
redisServer = new RedisServer(Protocol.DEFAULT_PORT);
redisServer.start();
}

public void destroy() throws Exception {
if (redisServer != null) {
redisServer.stop();
}
}
}
}

@Configuration
@EnableRedisHttpSession
@Profile(Profiles.CLOUD)
public class RedisCloudSessionConfiguration extends AbstractCloudConfig {

@Bean
public RedisConnectionFactory redisConnectionFactory() {
PoolConfig poolConfig = new PoolConfig(10, 200);// TODO: configure!
return connectionFactory().redisConnectionFactory("REDISCLOUD", new PooledServiceConnectorConfig(poolConfig));
}


Here is my dependency:



compile("redis.embedded:embedded-redis:0.4")

Aucun commentaire:

Enregistrer un commentaire