J'ai un itinéraire simple qui écoute un canal Redis. Pour une raison quelconque, cela ne fonctionne pas. Voici ma route. J'ai vérifié que les données sont publiées dans le canal Redis et je peux le lire en utilisant un abonné Jedis normal. Je cours Camel à l'intérieur de Jetty et il est déployé comme une guerre.Camel Redis Component s'abonner à un canal ne fonctionne pas
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");
}
}
MISE À JOUR (10 mai 2013 09h56 HNE): Ajout d'informations sur la version
<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>
version serveur Redis est 2.6.11
L'exemple de projet git est ici. https://github.com/soumyasd/camelredisdemo
MISE À JOUR 10 mai 2013 (22h18 HNE):
Comme suggéré dans les commentaires ci-dessous j'ai changé la version du ressort-données à 1.0.0.RELEASE. On dirait que le message arrive à l'abonné, mais je reçois toujours une exception.
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]
Quelle version de Camel et Redis utilisez-vous? –
J'ai mis à jour la question avec les informations de version ainsi que le lien vers le projet de démonstration sur github. –
Pour le moment, vous pouvez essayer de changer la version d'entraînement dans le composant de chameau ressort Redis comme suit: org.springframework.data ressort données Redis 1.0.0.RELEASE –