<commit_before>[[idempotentConsumer-eip]]
= Idempotent Consumer EIP
:docTitle: Idempotent Consumer
:description: Filters out duplicate messages
:since: 
:supportLevel: Stable

The
http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html[Idempotent
Consumer] from the xref:enterprise-integration-patterns.adoc[EIP
patterns] is used to filter out duplicate messages.

The Idempotent Consumer essentially acts like a
xref:filter-eip.adoc[Message Filter] to filter out duplicates.

Camel will add the message id eagerly to the repository to detect
duplication also for Exchanges currently in progress. 
 On completion Camel will remove the message id from the repository if
the Exchange failed, otherwise it stays there.

Camel provides the following Idempotent Consumer implementations:

* MemoryIdempotentRepository
* xref:components::file-component.adoc[FileIdempotentRepository]
* xref:components::hazelcast-summary.adoc[HazelcastIdempotentRepository]
* xref:components::sql-component.adoc[JdbcMessageIdRepository]
* xref:components::jpa-component.adoc[JpaMessageIdRepository]
* xref:components::infinispan-component.adoc[InfinispanIdempotentRepository]
* xref:components::jcache-component.adoc[JCacheIdempotentRepository]
* xref:latest@manual:ROOT:spring.adoc[SpringCacheIdempotentRepository]
* xref:components::ehcache-component.adoc[EhcacheIdempotentRepository]
* xref:components::kafka-component.adoc[KafkaIdempotentRepository]

== Options

// eip options: START
The Idempotent Consumer EIP supports 5 options which are listed below:

[width="100%",cols="2,5,^1,2",options="header"]
|===<commit_msg>Update idempotentConsumer-eip.adoc<commit_after>[[idempotentConsumer-eip]]
= Idempotent Consumer EIP
:docTitle: Idempotent Consumer
:description: Filters out duplicate messages
:since: 
:supportLevel: Stable

The
http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html[Idempotent
Consumer] from the xref:enterprise-integration-patterns.adoc[EIP
patterns] is used to filter out duplicate messages.

The Idempotent Consumer essentially acts like a
xref:filter-eip.adoc[Message Filter] to filter out duplicates.

Camel will add the message id eagerly to the repository to detect
duplication also for Exchanges currently in progress. 
 On completion Camel will remove the message id from the repository if
the Exchange failed, otherwise it stays there.

Camel provides the following Idempotent Consumer implementations:

* MemoryIdempotentRepository
* xref:components::file-component.adoc[FileIdempotentRepository]
* xref:components::hazelcast-summary.adoc[HazelcastIdempotentRepository]
* xref:components::sql-component.adoc[JdbcMessageIdRepository]
* xref:components::jpa-component.adoc[JpaMessageIdRepository]
* xref:components::infinispan-component.adoc[InfinispanIdempotentRepository]
* xref:components::jcache-component.adoc[JCacheIdempotentRepository]
* xref:latest@manual:ROOT:spring.adoc[SpringCacheIdempotentRepository]
* xref:components::ehcache-component.adoc[EhcacheIdempotentRepository]
* xref:components::kafka-component.adoc[KafkaIdempotentRepository]
* xref:components::hbase-component.adoc[HbaseIdempotentRepository]

== Options

// eip options: START
The Idempotent Consumer EIP supports 5 options which are listed below:

[width="100%",cols="2,5,^1,2",options="header"]
|===
{'fraction_non_alphanumeric': 0.08981314044605183, 'fraction_numerical': 0.004822182037371911, 'mean_word_length': 8.428977272727273, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4251425', 'n_tokens_mistral': 1047, 'n_tokens_neox': 948, 'n_words': 228}