Redis序列化前缀为额外字符串

时间:2015-08-27 09:42:16

标签: redis apache-camel

Camel-Redis的序列化程序为消息密钥添加了额外字符前缀。

当我检查数据库时,消息键显示类似..

"\xac\xed\x00\x05t\x00\x11test150827171118"

如您所见,字符串"\xac\xed\x00\x05t\x00\x11"

为键"test150827171118"添加了前缀。

我尝试了两种模式,

首先,我直接在注册表中设置了序列化程序。

Registry.put("serializer", new StringRedisSerializer());

第二种模式是首先在RedisTemplate中设置。然后将redis模板放在注册表中。

RedisTemplate<?, ?> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
registry.put("redisTemplate", template);

两者都无法解决serizlization的问题。我错过了camel-redis的其他配置。

1 个答案:

答案 0 :(得分:2)

在我的开发机器上谷歌搜索和实施五六个小时后,我终于找到了答案。

Camel serializer URI选项仅适用于CONSUMER。 要影响PRODUCER,我还需要将自定义RedisTemplate配置为StringRedisSerializer作为默认序列化程序。

redisTemplate.setDefaultSerializer(new StringRedisSerializer());

然后将serializer和redis模板实例放在注册表中,并从Camel URI引用它。

registry.put("customTemplate", template);
registry.put("stringSerializer", new StringRedisSerializer());

Camel URI就像......

redis://<host>:<port>?redisTemplate=#customTemplate&serializer=#stringSerializer