Camel idempotentConsumer总是使用PUT而不是GET

时间:2018-03-06 05:08:35

标签: apache-camel

我正在使用骆驼幂等。有人可以解释一下idempotentConsumer xml标签背后的逻辑。

我第一次收到文件。所有好的idempotentconsumer块都被执行了。在infinispan服务器上,我看到了一个日志PUT。

我删除了一个重复的文件。现在,idempotentconsumer识别重复但在infinispan服务器上我看到一个带有PUT的日志而不是GET 。我想知道服务器端或者是camel-client这个问题吗?

<idempotentConsumer messageIdRepositoryRef="infinispanRepo" >
<header>CamelFileAbsolutePath</header>
</idempotentConsumer>

1 个答案:

答案 0 :(得分:0)

这不是按设计工作的。幂等消费者EIP将尝试将密钥置于具有固定值true的缓存中 - 这将是Infinispan上的原子操作。然后使用该put操作的结果来知道是否存在重复。

如果你使用GET进行两次操作然后PUT它不再是原子操作,你最终会遇到问题。

请参阅以下代码: https://github.com/apache/camel/blob/master/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/processor/idempotent/InfinispanIdempotentRepository.java#L68