如何使用ElastiCache作为Camel Idempotent存储库?

时间:2016-09-28 13:55:18

标签: java redis apache-camel jedis amazon-elasticache

我正在尝试将RedisIdempotentRepository用作Idempotent Consumer用于骆驼路线。我尝试使用本地Redis docker容器,并使用以下代码按预期工作。

IdempotentRepository redisIdempotentRepository = new RedisIdempotentRepository("redis");
from(source)
    .idempotentConsumer(simple("${in.header.CamelFileName}"), redisIdempotentRepository)
    .log("Uploading file ${file:name} started...")
    .to(destination)
    .log("Uploading file ${file:name} completed...");

在未提供任何详细信息的情况下,它正在连接到localhost:6379。如何提供ElastiCache详细信息以进行连接?

我尝试了这些配置(link1link2)来构建RedisTemplate,但无法连接。

1 个答案:

答案 0 :(得分:0)

现在正在工作。我在redis节点关联安全组的入站规则中添加了6379端口。

JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("<cluster-name>.mdbnso.0001.use1.cache.amazonaws.com");
jedisConnectionFactory.setPort(6379);
jedisConnectionFactory.afterPropertiesSet();

RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(jedisConnectionFactory);
redisTemplate.afterPropertiesSet();

IdempotentRepository redisIdempotentRepository = new RedisIdempotentRepository(redisTemplate, "redis");

from(source)
    .idempotentConsumer(simple("${in.header.CamelFileName}"), redisIdempotentRepository)
    .log("Uploading file ${file:name} started...")
    .to(destination)
    .log("Uploading file ${file:name} completed...");