This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 6f3fe508f15736c615f7e4870a5ca3dc0563bc95 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Jun 25 08:20:57 2026 +0200 chore: add AI Patterns page mapping modern terms to Camel EIPs New standalone page (ai-patterns.adoc) that maps common AI, data engineering, and distributed systems terminology (fan-out, scatter- gather, retry, dedup, etc.) to the corresponding Camel EIPs. Includes sections for A2A and LangChain4j Tokenizer. Cross-linked from the EIP index page and added to all doc navigation points alongside EIP Patterns. Co-Authored-By: Claude <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../main/docs/modules/eips/pages/ai-patterns.adoc | 218 +++++++++++++++++++++ .../pages/enterprise-integration-patterns.adoc | 4 + docs/eips-nav.adoc.template | 1 + docs/main/modules/reference/pages/index.adoc | 3 +- docs/user-manual/modules/ROOT/pages/index.adoc | 3 +- docs/user-manual/modules/ROOT/references.adoc | 3 +- 6 files changed, 229 insertions(+), 3 deletions(-) diff --git a/core/camel-core-engine/src/main/docs/modules/eips/pages/ai-patterns.adoc b/core/camel-core-engine/src/main/docs/modules/eips/pages/ai-patterns.adoc new file mode 100644 index 000000000000..7d288fb4ec79 --- /dev/null +++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/ai-patterns.adoc @@ -0,0 +1,218 @@ += AI Patterns +:doctitle: AI Patterns +:shortname: ai-patterns +:description: Common AI and modern software design pattern terms mapped to Camel EIPs + +If you come from an AI, data engineering, or modern distributed systems background, +you may know integration patterns by different names. This page maps common +terms to the corresponding Camel EIPs. + +See also the full xref:enterprise-integration-patterns.adoc[Enterprise Integration Patterns] index. + +== Data Flow + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Pipeline / Chain +|xref:pipeline-eip.adoc[Pipes and Filters] +|Process a message through a sequence of steps. + +|Fan-out / Broadcast +|xref:multicast-eip.adoc[Multicast] +|Send the same message to multiple destinations in parallel. + +|Fan-in / Reduce / Join +|xref:aggregate-eip.adoc[Aggregator] +|Combine multiple related messages into a single message. + +|Scatter-Gather +|xref:scatter-gather.adoc[Scatter-Gather] +|Send a message to multiple recipients and aggregate their replies. + +|Map / Transform +|xref:transform-eip.adoc[Transform], xref:setBody-eip.adoc[Set Body] +|Transform or replace the message content. + +|Split / Chunk +|xref:split-eip.adoc[Splitter] +|Break a message into smaller pieces for individual processing. + +|Merge +|xref:aggregate-eip.adoc[Aggregator] +|Merge multiple messages into one using a correlation key and aggregation strategy. + +|Filter +|xref:filter-eip.adoc[Message Filter] +|Discard messages that do not match a predicate. + +|Router / Dispatch +|xref:choice-eip.adoc[Content-Based Router], xref:dynamicRouter-eip.adoc[Dynamic Router] +|Route messages to different destinations based on content or rules. +|=== + +== Enrichment and Context + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Enrich / Hydrate / Augment +|xref:enrich-eip.adoc[Enrich], xref:pollEnrich-eip.adoc[Poll Enrich] +|Fetch additional data from an external source and merge it into the message. + +|Validate / Guard +|xref:validate-eip.adoc[Validate] +|Check that a message satisfies a condition before further processing. + +|Normalize +|xref:normalizer.adoc[Normalizer] +|Convert messages from different formats into a single canonical format. + +|Serialize / Deserialize +|xref:marshal-eip.adoc[Marshal], xref:unmarshal-eip.adoc[Unmarshal] +|Convert between objects and wire formats (JSON, XML, Avro, Protobuf, etc.). +|=== + +== Resilience and Error Handling + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Retry +|xref:error-handler.adoc[Error Handler] +|Automatically retry failed message processing with configurable backoff. + +|Circuit Breaker +|xref:circuitBreaker-eip.adoc[Circuit Breaker] +|Stop calling a failing service and provide a fallback response. + +|Fallback +|xref:onFallback-eip.adoc[On Fallback] +|Define an alternative route when the primary processing fails. + +|Dead Letter / Poison Pill +|xref:dead-letter-channel.adoc[Dead Letter Channel] +|Move messages that cannot be processed to a separate channel for investigation. + +|Compensate / Rollback +|xref:saga-eip.adoc[Saga], xref:rollback-eip.adoc[Rollback] +|Undo or compensate for completed steps when a multi-step process fails. +|=== + +== Rate Control and Scheduling + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Rate Limit / Throttle +|xref:throttle-eip.adoc[Throttler] +|Limit the number of messages processed per time period. + +|Debounce / Delay +|xref:delay-eip.adoc[Delayer] +|Introduce a delay before processing a message. + +|Poll / Pull +|xref:polling-consumer.adoc[Polling Consumer], xref:poll-eip.adoc[Poll] +|Consume messages on demand rather than being pushed. + +|Loop / Iterate +|xref:loop-eip.adoc[Loop] +|Repeat processing a message a fixed number of times or until a condition is met. + +|Sample +|xref:sample-eip.adoc[Sampling] +|Pick one message out of many in a time period to reduce volume. +|=== + +== Load Distribution + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Load Balance +|xref:loadBalance-eip.adoc[Load Balancer] +|Distribute messages across multiple endpoints. + +|Round Robin +|xref:roundRobinLoadBalancer-eip.adoc[Round Robin Load Balancer] +|Distribute messages evenly in rotation. + +|Failover +|xref:failoverLoadBalancer-eip.adoc[Failover Load Balancer] +|Try the next endpoint when the current one fails. + +|Weighted +|xref:weightedLoadBalancer-eip.adoc[Weighted Load Balancer] +|Distribute messages according to weighted ratios. + +|Sticky / Affinity +|xref:stickyLoadBalancer-eip.adoc[Sticky Load Balancer] +|Route related messages to the same endpoint based on a correlation key. +|=== + +== Deduplication and Idempotency + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Dedup / Deduplicate +|xref:idempotentConsumer-eip.adoc[Idempotent Consumer] +|Detect and discard duplicate messages based on a unique identifier. + +|Claim Check / Stash +|xref:claimCheck-eip.adoc[Claim Check] +|Temporarily store message data and retrieve it later to reduce payload size. +|=== + +== Connectivity + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel EIP |Description + +|Source / Ingress +|xref:from-eip.adoc[From] +|Define the input endpoint that feeds messages into a route. + +|Sink / Egress +|xref:to-eip.adoc[To], xref:toD-eip.adoc[To D] +|Send messages to a fixed or dynamically computed endpoint. + +|Connector / Adapter +|xref:channel-adapter.adoc[Channel Adapter] +|Connect an application to a messaging system. + +|Webhook / Event-Driven +|xref:eventDrivenConsumer-eip.adoc[Event Driven Consumer] +|React to messages as they arrive without polling. + +|Gateway +|xref:messaging-gateway.adoc[Messaging Gateway] +|Encapsulate access to the messaging system behind a clean interface. + +|Wire Tap / Tap / Observe +|xref:wireTap-eip.adoc[Wire Tap] +|Send a copy of the message to a secondary destination for monitoring. +|=== + +== AI and Agent Integration + +[width="100%",cols="20%,30%,50%"] +|=== +|Term |Camel Component / EIP |Description + +|Agent-to-Agent / A2A +|xref:ROOT:a2a-component.adoc[A2A] +|Google's Agent-to-Agent protocol for communication between AI agents. + +|Tokenize / Chunk (for LLM) +|xref:ROOT:langchain4j-tokenizer.adoc[LangChain4j Tokenizer] +|Split text into tokens or chunks sized for LLM context windows, using LangChain4j tokenizer strategies. +|=== diff --git a/core/camel-core-engine/src/main/docs/modules/eips/pages/enterprise-integration-patterns.adoc b/core/camel-core-engine/src/main/docs/modules/eips/pages/enterprise-integration-patterns.adoc index 66cf7ce31e6d..819428ae457c 100644 --- a/core/camel-core-engine/src/main/docs/modules/eips/pages/enterprise-integration-patterns.adoc +++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/enterprise-integration-patterns.adoc @@ -7,6 +7,10 @@ Camel supports most of the http://www.eaipatterns.com/toc.html[Enterprise Integration Patterns] from the excellent book by Gregor Hohpe and Bobby Woolf. +TIP: If you come from an AI, data engineering, or modern distributed systems background, +see xref:ai-patterns.adoc[AI Patterns] for a mapping of common terms +like fan-out, scatter-gather, and retry to the corresponding Camel EIPs. + == Messaging Systems [width="100%",cols="10%,10%,80%",] diff --git a/docs/eips-nav.adoc.template b/docs/eips-nav.adoc.template index 0ba5b6dd6a0d..7139a7d9a773 100644 --- a/docs/eips-nav.adoc.template +++ b/docs/eips-nav.adoc.template @@ -1,5 +1,6 @@ <!-- generated:txt --> <!-- endinject --> * xref:eips:enterprise-integration-patterns.adoc[Enterprise Integration Patterns] +* xref:eips:ai-patterns.adoc[AI Patterns] <!-- inject:adoc --> <!-- endinject --> diff --git a/docs/main/modules/reference/pages/index.adoc b/docs/main/modules/reference/pages/index.adoc index 23133e786abf..b00c4d6ee1d3 100644 --- a/docs/main/modules/reference/pages/index.adoc +++ b/docs/main/modules/reference/pages/index.adoc @@ -4,7 +4,8 @@ * xref:components::index.adoc[Components] * xref:components:dataformats:index.adoc[Data Formats] * xref:components:languages:index.adoc[Languages] -* xref:components:eips:enterprise-integration-patterns.adoc[EIPs] +* xref:components:eips:enterprise-integration-patterns.adoc[EIP Patterns] +* xref:components:eips:ai-patterns.adoc[AI Patterns] * xref:manual::examples.adoc[Examples] * https://www.javadoc.io/doc/org.apache.camel/camel-api/latest/index.html[API Documentation] for the latest version diff --git a/docs/user-manual/modules/ROOT/pages/index.adoc b/docs/user-manual/modules/ROOT/pages/index.adoc index 888cf66607f6..1601cc1b1bab 100644 --- a/docs/user-manual/modules/ROOT/pages/index.adoc +++ b/docs/user-manual/modules/ROOT/pages/index.adoc @@ -31,7 +31,8 @@ For a deeper and better understanding of Apache Camel, an xref:faq:what-is-camel * link:/community/books/[Books] * xref:examples.adoc[Examples] * xref:architecture.adoc[Architecture] -* xref:components:eips:enterprise-integration-patterns.adoc[Enterprise Integration Patterns] +* xref:components:eips:enterprise-integration-patterns.adoc[EIP Patterns] +* xref:components:eips:ai-patterns.adoc[AI Patterns] * xref:component-dsl.adoc[Component DSL] * xref:Endpoint-dsl.adoc[Endpoint DSL] * xref:dataformat-dsl.adoc[DataFormat DSL] diff --git a/docs/user-manual/modules/ROOT/references.adoc b/docs/user-manual/modules/ROOT/references.adoc index ee11dbf81434..b94d9df3c84e 100644 --- a/docs/user-manual/modules/ROOT/references.adoc +++ b/docs/user-manual/modules/ROOT/references.adoc @@ -2,4 +2,5 @@ ** xref:components::index.adoc[Components] ** xref:components:dataformats:index.adoc[Data Formats] ** xref:components:languages:index.adoc[Languages] -** xref:components:eips:enterprise-integration-patterns.adoc[EIPs] +** xref:components:eips:enterprise-integration-patterns.adoc[EIP Patterns] +** xref:components:eips:ai-patterns.adoc[AI Patterns]
