0

Redis チャネルをリッスンする簡単なルートがあります。何らかの理由で機能していません。これが私のルートです。データが Redis チャネルに公開されていることを確認し、通常の Jedis サブスクライバーを使用して読み取ることができます。Jetty 内で Camel を実行しており、戦争として展開されています。

public class RedisSubscriberRoute extends RouteBuilder{

    @Override
public void configure() throws Exception {

    from("spring-redis://localhost:6379?command=SUBSCRIBE&channels=mychannel") 
    .process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                String res = exchange.getIn().getBody().toString();
                System.out.println("************ " + res); 
                exchange.getOut().setBody(res);
            }
        })
    .to("log:foo");
}

}

更新 (2013 年 5 月 10 日午前 9 時 56 分 EST): バージョン情報の追加

    <properties>
            <spring.version>3.2.2.RELEASE</spring.version>
            <camel.version>2.11.0</camel.version>
            <jetty.version>7.6.8.v20121106</jetty.version>
    </properties>

Redis サーバーのバージョンは 2.6.11 です

サンプルの git プロジェクトはこちらです。 https://github.com/soumyasd/camelredisdemo

2013 年 5 月 10 日更新 (東部標準時午後 10 時 18 分):

以下のコメントで示唆されているように、私は spring-data のバージョンを 1.0.0.RELEASE に変更しました。メッセージがサブスクライバーに届いているように見えますが、まだ例外が発生しています。

java.lang.RuntimeException: org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.StreamCorruptedException: invalid stream header: 77686174
    at org.apache.camel.component.redis.RedisConsumer.onMessage(RedisConsumer.java:73)[camel-spring-redis-2.11.0.jar:2.11.0]
    at org.springframework.data.redis.listener.RedisMessageListenerContainer.executeListener(RedisMessageListenerContainer.java:242)[spring-data-redis-1.0.0.RELEASE.jar:]
    at org.springframework.data.redis.listener.RedisMessageListenerContainer.processMessage(RedisMessageListenerContainer.java:231)[spring-data-redis-1.0.0.RELEASE.jar:]
    at org.springframework.data.redis.listener.RedisMessageListenerContainer$DispatchMessageListener$1.run(RedisMessageListenerContainer.java:726)[spring-data-redis-1.0.0.RELEASE.jar:]
    at java.lang.Thread.run(Thread.java:680)[:1.6.0_45]
4

2 に答える 2