May be Jedis is much more faster than Spring Redis? Can you compare these
both (without using Camel)?
Jedis is Apache license 2.0 [1], so we could offer a component for Jedis
too...

[1] http://code.google.com/p/jedis/

Best,
Christian
-----------------

Software Integration Specialist

Apache Camel committer: https://camel.apache.org/team
V.P. Apache Camel: https://www.apache.org/foundation/
Apache Member: https://www.apache.org/foundation/members.html

https://www.linkedin.com/pub/christian-mueller/11/551/642


On Mon, Sep 9, 2013 at 12:08 PM, Shing Hing Man <[email protected]> wrote:

>
>
>  Hi,
>
> I have written a standalone program PublishBenchmark.java (please see
> below)   using Jedis to publish a 2K message to a Redis Channel 100,000
> times.
> I repeat the same process using Camel 2.11.1  Camel spring redis component
> (Please see RedisPublisherBenchmark.java below).
> Below is timing for both.
>
> Jedis :  Time taken (in sec) to publish 100000 msgs=1.805
> Camel spring redis : Time taken (in sec) to publish 100000 msgs=16.017
>
> Is my configuration for Camel spring redis optimal ?
> Is it  expected that Camel spring redis  about 8 times slower than a
> standalone Jedis program ?
>
> Thanks in advance for any assistance !
>
> Shing
>
>
>
> public class RedisPublisherBenchmark {
>
>     public static void main(String[] args) throws Exception {
>
>         JedisShardInfo hostInfo = new JedisShardInfo("localhost", 6379);
>         hostInfo.setPassword("abc123");
>         final JedisConnectionFactory CONNECTION_FACTORY = new
> JedisConnectionFactory(
>                 hostInfo);
>
>         RedisTemplate<String, String> redisTemplate = new
> RedisTemplate<String, String>();
>         redisTemplate.setConnectionFactory(CONNECTION_FACTORY);
>         // redisTemplate.afterPropertiesSet();
>
>         SimpleRegistry registry = new SimpleRegistry();
>         registry.put("redisTemplate", redisTemplate);
>
>         // To get rid of Hex padding
>         redisTemplate.setKeySerializer(new StringRedisSerializer());
>         redisTemplate.setValueSerializer(new StringRedisSerializer());
>
>         // create CamelContext
>         CamelContext context = new DefaultCamelContext(registry);
>         Component direct = new DirectComponent();
>
>         context.addComponent("start", direct);
>
>         final String directEndPoint = "direct:start";
>
>         context.addRoutes(new RouteBuilder() {
>             @Override
>             public void configure() throws Exception {
>                 from("direct:start")
>
> .to("spring-redis://localhost:6379?redisTemplate=#redisTemplate");
>             }
>         });
>         context.start();
>
>         ProducerTemplate template = context.createProducerTemplate();
>         final String payload = getPayload();
>
>
>         int NO_OF_MSGS= 100000;
>         final Processor processor = new RedisProcessor(payload);
>
>         long start = System.currentTimeMillis();
>
>         for (int i = 0; i <NO_OF_MSGS ; ++i) {
>             // Publish "Hello world" to a redis channel
>             Exchange exchange = template.send(directEndPoint, processor);
>         }
>
>         long end = System.currentTimeMillis();
>         double timeTaken = (end - start)/1000.0;
>
>         System.out.println(String.format("Time taken (in sec) to publish
> %s msgs=%s", NO_OF_MSGS,timeTaken));
>
>         System.out.println("Press any key to shutdown.");
>         BufferedReader br = new BufferedReader(new
> InputStreamReader(System.in));
>         br.readLine();
>
>         // stop the CamelContext
>         context.stop();
>     }
>
>     private static String getPayload() {
>         String template = "name11:foo11";
>
>         StringBuilder sb = new StringBuilder();
>         for (int i = 0; i < 170; ++i) {
>             sb.append(template);
>         }
>
>         return sb.toString();
>
>     }
>
>     private static class RedisProcessor implements Processor {
>
>         public String message;
>
>         public RedisProcessor(String message) {
>             this.message = message;
>         }
>
>         @Override
>         public void process(Exchange exchange) throws Exception {
>             Message in = exchange.getIn();
>
>             in.setHeader(RedisConstants.COMMAND, "PUBLISH");
>             in.setHeader(RedisConstants.CHANNEL, "msjscollector");
>             in.setHeader(RedisConstants.MESSAGE, message);
>
>         }
>
>     }
>
> }
>
> ============================
>
> public class PublishBenchmark {
>
>     private static final int NO_OF_MSGS = 100000;
>
>     public static void main(String[] args) throws UnknownHostException,
>             IOException {
>         Jedis jedis = new Jedis("localhost", 6379);
>         jedis.connect();
>         jedis.auth("abc123");
>         jedis.flushAll();
>
>         long begin = System.currentTimeMillis();
>
>         String payload = getPayload();
>
>         for (int n = 0; n <= NO_OF_MSGS; ++n) {
>             jedis.publish("msjscollector", payload);
>
>         }
>
>         double timeTaken = (System.currentTimeMillis() - begin)/1000.0;
>
>         jedis.disconnect();
>
>         System.out.println(String.format("Time taken (in sec) to publish
> %s msgs=%s", NO_OF_MSGS,timeTaken));
>     }
>
>
>     private static String  getPayload(){
>         String template ="name11:foo11";
>
>         StringBuilder sb = new StringBuilder();
>         for (int i=0; i < 170; ++i){
>             sb.append(template);
>         }
>
>         return sb.toString();
>
>
>     }
> }

Reply via email to