Camel idempotentConsumer总是使用PUT而不是GET

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Camel idempotentConsumer总是使用PUT而不是GET相关的知识,希望对你有一定的参考价值。

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

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

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

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

不,这是按设计工作的。幂等消费者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

以上是关于Camel idempotentConsumer总是使用PUT而不是GET的主要内容,如果未能解决你的问题,请参考以下文章

Apache Camel

[每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock

骆驼3的Camel-JoSQL支持

Camel - 内容丰富器:enrich() 与 pollEnrich()

note of camel in action--chapter 2 Routing with Camel

Spring Integration 与 Camel [关闭]