From daeb75cd96bdc8ad6dd5c9f2e0686be87d0bc53c Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Fri, 21 Jan 2011 20:03:56 +0200 Subject: [PATCH] + change default serializer for MessageListener adapter (since messages are usually strings) + rename serializer setter on MessageContainer --- .../redis/connection/jedis/JedisConnectionFactory.java | 5 ++++- .../redis/listener/RedisMessageListenerContainer.java | 2 +- .../redis/listener/adapter/MessageListenerAdapter.java | 7 ++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java index 092e7c9b2..7579013a0 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java @@ -78,7 +78,10 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean, if (usePool) { return pool.getResource(); } - return new Jedis(getShardInfo()); + Jedis jedis = new Jedis(getShardInfo()); + // force initialization (see Jedis issue #82) + jedis.connect(); + return jedis; } catch (Exception ex) { throw new DataAccessResourceFailureException("Cannot get Jedis connection", ex); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/RedisMessageListenerContainer.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/RedisMessageListenerContainer.java index e0b7e9224..c058650a7 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/RedisMessageListenerContainer.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/RedisMessageListenerContainer.java @@ -241,7 +241,7 @@ public class RedisMessageListenerContainer implements InitializingBean, Disposab * * @param serializer The serializer to set. */ - public void setSerializer(RedisSerializer serializer) { + public void setTopicSerializer(RedisSerializer serializer) { this.serializer = serializer; } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/adapter/MessageListenerAdapter.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/adapter/MessageListenerAdapter.java index 804cc8091..035bb0473 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/adapter/MessageListenerAdapter.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/listener/adapter/MessageListenerAdapter.java @@ -26,6 +26,7 @@ import org.springframework.data.keyvalue.redis.connection.Message; import org.springframework.data.keyvalue.redis.connection.MessageListener; import org.springframework.data.keyvalue.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.keyvalue.redis.serializer.RedisSerializer; +import org.springframework.data.keyvalue.redis.serializer.StringRedisSerializer; import org.springframework.util.Assert; import org.springframework.util.MethodInvoker; import org.springframework.util.ObjectUtils; @@ -62,6 +63,10 @@ import org.springframework.util.ObjectUtils; * For further examples and discussion please do refer to the Spring Data * reference documentation which describes this class (and its attendant * configuration) in detail. + * + * Important: Due to the nature of messages, the default serializer used by + * the adapter is {@link StringRedisSerializer}. If the messages are of a different type, + * change them accordingly through {@link #setSerializer(RedisSerializer)}. * * @author Juergen Hoeller * @author Costin Leau @@ -200,7 +205,7 @@ public class MessageListenerAdapter implements MessageListener { * @see JdkSerializationRedisSerializer */ protected void initDefaultStrategies() { - setSerializer(new JdkSerializationRedisSerializer()); + setSerializer(new StringRedisSerializer()); } /**