Hi Tommaso,

what you have seems correct.
Basically you have to use the same serializer for publishing and reading
data.
If you are using camel producer/consumer for publishing and reading data,
you don't have to specify anything, it will just work.

But if you are using a different client for reading data from redis, you
have to find the appropriate serializer from Spring redis project and
speficy that in the URI

HTH


On 10 September 2013 09:43, Tommaso <mynos_m...@yahoo.it> wrote:

> This is a question on stackoverflow as well:
>
> http://stackoverflow.com/questions/18698802/redis-wrong-serialization-using-the-camel-redis
>
> I'm playing with camel and redis. I have a very short route:
>
> from("timer://foo?period=5s")
>
> .to("
> http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson";)
>     .split().method(SplitFeatures.class,"splitMessage")
>
> .to("spring-redis://localhost:6379?command=SET&serializer=#serializer");
>
> Where splitMessage is the following:
>
>   public static List splitMessage(@Body String body) throws IOException {
>     List answer = new ArrayList();
>     JsonParser parser=new JsonParser();
>     JsonObject jo=   (JsonObject)parser.parse(body);
>
>     // I care only for the features array
>     JsonArray features=jo.get("features").getAsJsonArray();
>
>     for (JsonElement feature: features) {
>          Message msg=new DefaultMessage();
>          JsonObject jof=feature.getAsJsonObject();
>
>          // get the key
>          String id=jof.get("id").getAsString().toString();
>
>          System.out.print(id);
>          msg.setHeader(RedisConstants.KEY, id);
>          msg.setHeader(RedisConstants.VALUE, jof.toString());
>          answer.add(msg);
>     }
>     return answer;
>   }
>
> Everything runs smoothly, but when I check the redis db I see that the key
> is: "\xac\xed\x00\x05t\x00\nci11361338"
>
> and the same prefix "\xac\xed\x00\x05t\x00" is in the value.
>
> Obviously the those printed by the System.out look fine.
>
> As you see I tried to add a serializer, a StringRedisSerializer that I
> defined in the Main like this:
>
>   Main main = new Main();
>   main.bind("serializer", new StringRedisSerializer());
>
> But the result is the same (also using GenericToStringSerializer).
>
> Is there something I'm missing?
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/camel-redis-strings-serialization-tp5738994.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>



-- 
Bilgin Ibryam

Apache Camel & Apache OFBiz committer
Blog: ofbizian.com
Twitter: @bibryam <https://twitter.com/bibryam>

Author of Instant Apache Camel Message Routing
packtpub.com/apache-camel-message-routing/book<http://www.packtpub.com/apache-camel-message-routing/book>

Reply via email to