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 b0107a797a7e6aa511bf01125d21ae7215897594 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Jun 25 08:05:14 2026 +0200 chore: reorganize EIP index page with better categories and missing EIPs Reorganizes the EIP documentation index page from 7 to 13 sections, adding 35 previously missing EIP pages (load balancer strategies, set/remove/convert operations, marshal/unmarshal, enrich/poll, from/to/toD, bean, process, onFallback, rollback). Breaks the overloaded "Message Routing" section (24 entries) into focused groups: Message Routing, Load Balancing Strategies, Splitting and Aggregation, Flow Control, and Error Handling and Resilience. Removes the outdated Visio/stencils download section. Co-Authored-By: Claude <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../pages/enterprise-integration-patterns.adoc | 255 +++++++++++++++------ 1 file changed, 187 insertions(+), 68 deletions(-) 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 7c001221a419..66cf7ce31e6d 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 @@ -66,7 +66,7 @@ application to the messaging system so that it can send and receive messages? a|image::eip/MessagingBridgeIcon.gif[image] |xref:messaging-bridge.adoc[Messaging Bridge] |How can multiple messaging systems -be connected so that messages available on one are also available on the others?? +be connected so that messages available on one are also available on the others? a|image::eip/MessageBusIcon.gif[image] |xref:message-bus.adoc[Message Bus] |What is an architecture that @@ -75,7 +75,7 @@ fashion such that applications can be easily added or removed without affecting the others? a|image::eip/MessagingBridgeIcon.gif[image] -|xref:change-data-capture.adoc[Change Data Capture] | Data synchronization by capturing +|xref:change-data-capture.adoc[Change Data Capture] |Data synchronization by capturing changes made to a database, and apply those changes to another system. |=== @@ -103,7 +103,6 @@ for? a|image::eip/MessageExpirationIcon.gif[image] |xref:message-expiration.adoc[Message Expiration] |How can a sender indicate when a message should be considered stale and thus shouldn't be processed? - |=== == Message Routing @@ -128,31 +127,6 @@ a|image::eip/RecipientListIcon.gif[image] |xref:recipientList-eip.adoc[Recipient List] |How do we route a message to a list of (static or dynamically) specified recipients? -a|image::eip/SplitterIcon.gif[image] -|xref:split-eip.adoc[Splitter] |How can we process a message if it -contains multiple elements, each of which may have to be processed in a -different way? - -a|image::eip/AggregatorIcon.gif[image] -|xref:aggregate-eip.adoc[Aggregator] |How do we combine the results of -individual, but related, messages so that they can be processed as a -whole? - -a|image::eip/ResequencerIcon.gif[image] -|xref:resequence-eip.adoc[Resequencer] |How can we get a stream of related -but out-of-sequence messages back into the correct order? - -a|image::eip/DistributionAggregateIcon.gif[image] -|xref:composed-message-processor.adoc[Composed Message Processor] |How -can you maintain the overall message flow when processing a message -consisting of multiple elements, each of which may require different -processing? - -a|image::eip/DistributionAggregateIcon.gif[image] -|xref:scatter-gather.adoc[Scatter-Gather] |How do you maintain the -overall message flow when a message needs to be sent to multiple -recipients, each of which may send a reply? - a|image::eip/RoutingTableIcon.gif[image] |xref:routingSlip-eip.adoc[Routing Slip] |How do we route a message consecutively through a series of processing steps when the sequence of @@ -168,49 +142,76 @@ a|image::eip/MessageBrokerIcon.gif[image] destination of a message from the sender and maintain central control over the flow of messages? -a|image::eip/MessagingAdapterIcon.gif[image] -|xref:threads-eip.adoc[Threads] |How can I decouple the continued routing -of a message from the current thread? +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:multicast-eip.adoc[Multicast] |How can I route a message to a number +of endpoints at the same time? + +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:loadBalance-eip.adoc[Load Balancer] |How can I balance load across a +number of endpoints? a|image::eip/MessagingAdapterIcon.gif[image] -|xref:throttle-eip.adoc[Throttler] |How can I throttle messages to ensure -that a specific endpoint does not get overloaded, or we don't exceed an -agreed SLA with some external service? +|xref:kamelet-eip.adoc[Kamelet] |How can I call Kamelets (route templates)? a|image::eip/WireTap.gif[image] |xref:sample-eip.adoc[Sampling] |How can I sample one message out of many in a given period to avoid downstream route does not get overloaded? +|=== -a|image::eip/MessagingAdapterIcon.gif[image] -|xref:kamelet-eip.adoc[Kamelet] | How can I call Kamelets (route templates)? - -a|image::eip/MessageExpirationIcon.gif[image] -|xref:delay-eip.adoc[Delayer] |How can I delay the sending of a message? +== Load Balancing Strategies +[width="100%",cols="10%,10%,80%",] +|=== a|image::eip/MessageDispatcherIcon.gif[image] -|xref:loadBalance-eip.adoc[Load Balancer] |How can I balance load across a -number of endpoints? +|xref:failoverLoadBalancer-eip.adoc[Failover Load Balancer] |Tries the next endpoint in case of failure. a|image::eip/MessageDispatcherIcon.gif[image] -|xref:circuitBreaker-eip.adoc[Circuit Breaker] |How can I stop calling an external service if the service is broken? +|xref:roundRobinLoadBalancer-eip.adoc[Round Robin Load Balancer] |Distributes messages across endpoints in a round robin fashion. -a|image::eip/MessageExpirationIcon.gif[image] -|xref:stop-eip.adoc[Stop] |How can I stop to continue routing a message? +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:randomLoadBalancer-eip.adoc[Random Load Balancer] |Distributes messages across endpoints randomly. -a|image::eip/MessageExpirationIcon.gif[image] -|xref:throwException-eip.adoc[Throw Exception] |How can I throw an exception during routing? +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:weightedLoadBalancer-eip.adoc[Weighted Load Balancer] |Distributes messages across endpoints using weighted ratios. +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:stickyLoadBalancer-eip.adoc[Sticky Load Balancer] |Routes messages to the same endpoint based on a correlation expression. -a|image::eip/TransactionalClientIcon.gif[image] -|xref:saga-eip.adoc[Saga] |How can I define a series of related actions in a Camel route -that should be either completed successfully (all of them) or not-executed/compensated? +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:topicLoadBalancer-eip.adoc[Topic Load Balancer] |Sends the message to all endpoints (like a topic). a|image::eip/MessageDispatcherIcon.gif[image] -|xref:multicast-eip.adoc[Multicast] |How can I route a message to a number -of endpoints at the same time? +|xref:customLoadBalancer-eip.adoc[Custom Load Balancer] |Uses a custom load balancing implementation. +|=== -a|image::eip/PollingConsumerIcon.gif[image] -|xref:loop-eip.adoc[Loop] |How can I repeat processing a message in a loop? +== Splitting and Aggregation + +[width="100%",cols="10%,10%,80%",] +|=== +a|image::eip/SplitterIcon.gif[image] +|xref:split-eip.adoc[Splitter] |How can we process a message if it +contains multiple elements, each of which may have to be processed in a +different way? + +a|image::eip/AggregatorIcon.gif[image] +|xref:aggregate-eip.adoc[Aggregator] |How do we combine the results of +individual, but related, messages so that they can be processed as a +whole? + +a|image::eip/ResequencerIcon.gif[image] +|xref:resequence-eip.adoc[Resequencer] |How can we get a stream of related +but out-of-sequence messages back into the correct order? + +a|image::eip/DistributionAggregateIcon.gif[image] +|xref:composed-message-processor.adoc[Composed Message Processor] |How +can you maintain the overall message flow when processing a message +consisting of multiple elements, each of which may require different +processing? + +a|image::eip/DistributionAggregateIcon.gif[image] +|xref:scatter-gather.adoc[Scatter-Gather] |How do you maintain the +overall message flow when a message needs to be sent to multiple +recipients, each of which may send a reply? |=== == Message Transformation @@ -222,6 +223,15 @@ a|image::eip/DataEnricherIcon.gif[image] with another system if the message originator does not have all the required data items available? +a|image::eip/DataEnricherIcon.gif[image] +|xref:enrich-eip.adoc[Enrich] |Enriches the message with data from a secondary resource using a request-reply pattern. + +a|image::eip/DataEnricherIcon.gif[image] +|xref:pollEnrich-eip.adoc[Poll Enrich] |Enriches the message with data obtained by polling a consumer endpoint. + +a|image::eip/DataEnricherIcon.gif[image] +|xref:poll-eip.adoc[Poll] |Polls a message from an endpoint for later use in the routing. + a|image::eip/ContentFilterIcon.gif[image] |xref:content-filter-eip.adoc[Content Filter] |How do you simplify dealing with a large message when you are interested only in a few data items? @@ -245,11 +255,89 @@ a|image::eip/MessageSelectorIcon.gif[image] |xref:validate-eip.adoc[Validate] |How can I validate a message? |=== -== Messaging Endpoints +== Message Data Manipulation [width="100%",cols="10%,10%,80%",] |=== +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:setBody-eip.adoc[Set Body] |Sets the message body to the result of an expression. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:setHeader-eip.adoc[Set Header] |Sets a single message header to the result of an expression. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:setHeaders-eip.adoc[Set Headers] |Sets multiple message headers at the same time. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:setProperty-eip.adoc[Set Property] |Sets an exchange property to the result of an expression. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:setVariable-eip.adoc[Set Variable] |Sets a variable to the result of an expression. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:setVariables-eip.adoc[Set Variables] |Sets multiple variables at the same time. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:removeHeader-eip.adoc[Remove Header] |Removes a single message header by name. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:removeHeaders-eip.adoc[Remove Headers] |Removes message headers matching a pattern. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:removeProperty-eip.adoc[Remove Property] |Removes a single exchange property by name. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:removeProperties-eip.adoc[Remove Properties] |Removes exchange properties matching a pattern. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:removeVariable-eip.adoc[Remove Variable] |Removes a variable by name. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:convertBodyTo-eip.adoc[Convert Body To] |Converts the message body to another type. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:convertHeaderTo-eip.adoc[Convert Header To] |Converts a message header to another type. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:convertVariableTo-eip.adoc[Convert Variable To] |Converts a variable to another type. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:transform-eip.adoc[Transform] |Transforms the message body based on an expression and stops further routing. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:transformDataType-eip.adoc[Transform Data Type] |Transforms the message between named data types. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:marshal-eip.adoc[Marshal] |Marshals the message body into a binary or textual format using a data format. + +a|image::eip/MessageTranslatorIcon.gif[image] +|xref:unmarshal-eip.adoc[Unmarshal] |Unmarshals the message body from a binary or textual format using a data format. +|=== + +== Endpoints and Invocation + +[width="100%",cols="10%,10%,80%",] +|=== +a|image::eip/MessageEndpointIcon.gif[image] +|xref:from-eip.adoc[From] |Defines the consumer endpoint that acts as the input source for a route. + +a|image::eip/MessageEndpointIcon.gif[image] +|xref:to-eip.adoc[To] |Sends the message to a fixed endpoint URI. + +a|image::eip/MessageEndpointIcon.gif[image] +|xref:toD-eip.adoc[To D] |Sends the message to an endpoint URI computed dynamically from an expression. + +a|image::eip/MessagingAdapterIcon.gif[image] +|xref:bean-eip.adoc[Bean] |Invokes a method on a Java bean with automatic parameter binding. + +a|image::eip/MessagingAdapterIcon.gif[image] +|xref:process-eip.adoc[Process] |Invokes a custom Camel Processor for programmatic message processing. +|=== + +== Messaging Endpoints +[width="100%",cols="10%,10%,80%",] +|=== a|image::eip/MessageTranslatorIcon.gif[image] |xref:messaging-mapper.adoc[Messaging Mapper] |How do you move data between domain objects and the messaging infrastructure while keeping @@ -301,6 +389,50 @@ design a service to be invoked both via various messaging technologies and via non-messaging techniques? |=== +== Flow Control + +[width="100%",cols="10%,10%,80%",] +|=== +a|image::eip/MessagingAdapterIcon.gif[image] +|xref:throttle-eip.adoc[Throttler] |How can I throttle messages to ensure +that a specific endpoint does not get overloaded, or we don't exceed an +agreed SLA with some external service? + +a|image::eip/MessageExpirationIcon.gif[image] +|xref:delay-eip.adoc[Delayer] |How can I delay the sending of a message? + +a|image::eip/PollingConsumerIcon.gif[image] +|xref:loop-eip.adoc[Loop] |How can I repeat processing a message in a loop? + +a|image::eip/MessageExpirationIcon.gif[image] +|xref:stop-eip.adoc[Stop] |How can I stop to continue routing a message? + +a|image::eip/MessagingAdapterIcon.gif[image] +|xref:threads-eip.adoc[Threads] |How can I decouple the continued routing +of a message from the current thread? +|=== + +== Error Handling and Resilience + +[width="100%",cols="10%,10%,80%",] +|=== +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:circuitBreaker-eip.adoc[Circuit Breaker] |How can I stop calling an external service if the service is broken? + +a|image::eip/MessageDispatcherIcon.gif[image] +|xref:onFallback-eip.adoc[On Fallback] |Defines the fallback route that executes when the Circuit Breaker trips or the primary route fails. + +a|image::eip/TransactionalClientIcon.gif[image] +|xref:saga-eip.adoc[Saga] |How can I define a series of related actions in a Camel route +that should be either completed successfully (all of them) or not-executed/compensated? + +a|image::eip/MessageExpirationIcon.gif[image] +|xref:throwException-eip.adoc[Throw Exception] |How can I throw an exception during routing? + +a|image::eip/TransactionalClientIcon.gif[image] +|xref:rollback-eip.adoc[Rollback] |Marks the current exchange for rollback, typically used with transactions. +|=== + == System Management [width="100%",cols="10%,10%,80%",] @@ -327,18 +459,5 @@ a|image::eip/ControlBusIcon.gif[image] |xref:log-eip.adoc[Log] |How can I log processing a message? a|image::eip/RoutingTableIcon.gif[image] -|xref:step-eip.adoc[Step] | Groups together a set of EIPs into a composite logical unit for metrics and monitoring. | - +|xref:step-eip.adoc[Step] |Groups together a set of EIPs into a composite logical unit for metrics and monitoring. |=== - -== EIP Icons - -The EIP icons library is available as a Visio stencil file adapted to -render the icons with the Camel color. Download it -xref:attachment$Hohpe_EIP_camel_20150622.zip[here] -for your presentation, functional and technical analysis documents. - -The original EIP stencil is also available in -xref:attachment$Hohpe_EIP_camel_OpenOffice.zip[OpenOffice 3.x Draw], -http://www.eaipatterns.com/download/EIP_Visio_stencil.zip[Microsoft Visio], -or http://www.graffletopia.com/stencils/137[Omnigraffle].
