2016-05-24 10 views
1

CamelアプリケーションでRedisコンポーネントを使用しています。 1つの問題は、キーに文字列を自動的に付加することです。たとえば、のは、私は私のキャメルのアプリで、次を実行しましょう:私は、コマンドラインのRedisクライアントを開き、実行した場合、その後Camel Redisが自動的に文字列に文字列を追加する

 from("direct://path/to/store/in/redis") 
      .setHeader(RedisConstants.COMMAND, constant("SET")) 
      .setHeader(RedisConstants.KEY, constant("key")) 
      .setHeader(RedisConstants.VALUE, constant("value")) 
      .to(spring-redis://localhost:6379); 

DB内のすべてのキーを一覧表示するには、次

> keys * 
ここで

1) "\xac\xed\x00\x05t\x00\x03key" 

あなたはそれが\ XAC \ XED \ X00 \ x05t \ X00 \ X03の鍵を先頭に追加することを見ることができる、と私はそれはそれを行う場所を正確にはわからない:

それが返されます。

なんらかの理由で、これらのコマンドのキーに同じ文字列が付加されているため、キーのミスマッチがないため、これはGETおよびSETのRedisコマンドを使用している場合には問題ありません。しかし、私はこのように、キャメルアプリを通じて、KEYSのように、異なるRedisのコマンドを実行しようとした場合:

from("direct://some/other/path/to/redis") 
     .setHeader(RedisConstants.COMMAND, constant("KEYS")) 
     .setHeader(RedisConstants.PATTERN, constant("*")) 
     .to(spring-redis://localhost:6379); 

それは何も返さないクエリになりアスタリスクにわずかに異なる文字列を、先頭に追加しますそのパターンに一致するものはないからです。この上

> KEYS "\xac\xed\x00\x05t\x00\x05t*" 

任意の考え:それは

> KEYS * 

コマンドはRedisの中で次のように変換され、ありますか?

答えて

1

以下2つのポストは、私はこの問題を解決する助け:

Redis serialization prefixed with extra string

Weird redis key with spring data Jedis

だから私はStringRedisSerializerからRedisTemplateDefaultRedisSerializerを設定することで、それを修正しました。

私はGuiceCamelModuleに以下を追加して、依存関係/豆注入用のGuiceを使用していますので:

public class GuiceCamelTestModule extends CamelModuleWithMatchingRoutes { 

    ... 

    @Provides 
    @JndiBind("redisTemplateBean") 
    Object provideRedisTemplateBean() { 
     JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); 
     redisConnectionFactory.afterPropertiesSet(); 

     RedisTemplate<?, ?> template = new RedisTemplate(); 
     template.setConnectionFactory(redisConnectionFactory); 
     template.setDefaultSerializer(new StringRedisSerializer()); 
     template.afterPropertiesSet(); 
     return template; 
    } 
} 

そして、私のルートURIは次のようになります。

"spring-redis://localhost:6379?redisTemplate=#redisTemplateBean" 
関連する問題