2015-08-27 43 views
2

Camel-Redis的序列化程序將額外字符作爲消息密鑰的前綴。以額外字符串爲前綴的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

經過五六個小時的搜索和實施,我終於在我的開發機器上找到了答案。

駱駝serializer URI選項僅適用於CONSUMER。 爲了影響PRODUCER,我還需要配置一個自定義RedisTemplateStringRedisSerializer作爲默認序列化程序。

redisTemplate.setDefaultSerializer(new StringRedisSerializer()); 

然後將serializer和redis模板實例放入註冊表中並從Camel URI引用它。

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

駱駝URI就像是......

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

Yelo嗨,你有一個工作的駱駝Redis的項目?不知道如何配置RedisTemplate,獲取與PropertySet相關的錯誤。 –