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
The following commit(s) were added to refs/heads/main by this push:
new e0c396d3508a CAMEL-16861: Update docs
e0c396d3508a is described below
commit e0c396d3508a68ee3a8a02728aac1ba5fd7b6e92
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Feb 16 10:14:42 2026 +0100
CAMEL-16861: Update docs
---
.../modules/eips/pages/randomLoadBalancer-eip.adoc | 19 +++
.../docs/modules/eips/pages/recipientList-eip.adoc | 154 ++++++++++++++++++++-
.../modules/eips/pages/removeProperty-eip.adoc | 14 ++
.../modules/eips/pages/removeVariable-eip.adoc | 14 ++
.../docs/modules/eips/pages/requestReply-eip.adoc | 70 +++++++++-
5 files changed, 265 insertions(+), 6 deletions(-)
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/randomLoadBalancer-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/randomLoadBalancer-eip.adoc
index bdcf8902e45f..51f0066fdf19 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/randomLoadBalancer-eip.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/randomLoadBalancer-eip.adoc
@@ -55,4 +55,23 @@ XML::
</loadBalance>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - loadBalance:
+ steps:
+ - randomLoadBalancer: {}
+ - to:
+ uri: seda:x
+ - to:
+ uri: seda:y
+ - to:
+ uri: seda:z
+----
====
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/recipientList-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/recipientList-eip.adoc
index c7340d9a28de..9c961335a7aa 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/recipientList-eip.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/recipientList-eip.adoc
@@ -68,6 +68,20 @@ XML::
</recipientList>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: jms:queue:a
+ steps:
+ - recipientList:
+ expression:
+ constant:
+ expression: "seda:x,seda:y,seda:z"
+----
====
=== Using Dynamic Recipient List
@@ -96,10 +110,24 @@ XML::
<route>
<from uri="jms:queue:a"/>
<recipientList>
- <header>foo</constant>
+ <header>foo</header>
</recipientList>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: jms:queue:a
+ steps:
+ - recipientList:
+ expression:
+ header:
+ expression: foo
+----
====
==== How is dynamic destinations evaluated
@@ -113,7 +141,6 @@ The dynamic list of recipients that are defined in the
header must be iterable s
* a single `String` with values separated by comma (the delimiter configured)
* any other type will be regarded as a single value
-
=== Configuring delimiter for dynamic destinations
In XML DSL you can set the delimiter attribute for setting a delimiter to be
used if the header value is a single `String` with multiple separated endpoints.
@@ -130,12 +157,27 @@ By default, Camel uses comma as delimiter, but this
option lets you specify a cu
</route>
----
+And in YAML DSL you set the `delimiter` parameter:
+
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:a
+ steps:
+ - recipientList:
+ delimiter: ";"
+ expression:
+ header:
+ expression: myHeader
+----
+
So if *myHeader* contains a `String` with the value
`"activemq:queue:foo;activemq:topic:hello ; log:bar"`
then Camel will split the `String` using the delimiter given in the XML that
was comma,
resulting into three endpoints to send to.
You can use spaces between the endpoints as Camel will trim the value when it
looks up the endpoint to send to.
-And in Java DSL, you specify the delimiter as second parameter as shown below:
+In Java DSL, you specify the delimiter as second parameter as shown below:
[source,java]
----
@@ -172,6 +214,21 @@ XML::
</recipientList>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:a
+ steps:
+ - recipientList:
+ parallelProcessing: "true"
+ expression:
+ header:
+ expression: myHeader
+----
====
[IMPORTANT]
@@ -247,6 +304,43 @@ XML::
</route>
</routes>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - recipientList:
+ stopOnException: "true"
+ expression:
+ header:
+ expression: whereTo
+ - to:
+ uri: mock:result
+- route:
+ from:
+ uri: direct:foo
+ steps:
+ - to:
+ uri: mock:foo
+- route:
+ from:
+ uri: direct:bar
+ steps:
+ - process:
+ ref: myProcessor
+ - to:
+ uri: mock:bar
+- route:
+ from:
+ uri: direct:baz
+ steps:
+ - to:
+ uri: mock:baz
+----
====
In this example suppose a message is sent with the header
`whereTo=direct:foo,direct:bar,direct:baz`
@@ -281,6 +375,21 @@ XML::
</recipientList>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:a
+ steps:
+ - recipientList:
+ ignoreInvalidEndpoints: "true"
+ expression:
+ header:
+ expression: myHeader
+----
====
Then let us say the `myHeader` contains the following two endpoints
`direct:foo,xxx:bar`.
@@ -296,10 +405,12 @@ This allows you to continue processing if one message
consumer is slow.
For example, you can set a timeout value of 20 sec.
[WARNING]
+====
.Tasks may keep running
If the timeout is reached with running tasks still remaining,
certain tasks for which it is challenging for Camel to shut down in a graceful
manner may continue to run.
So use this option with a bit of care.
+====
For example, in the unit test below, you can see that we multicast the message
to three destinations.
We have a timeout of 2 seconds, which means only the last two messages can be
completed within the timeframe.
@@ -335,8 +446,8 @@ By default, if a timeout occurs the `AggregationStrategy`
is not invoked. Howeve
This allows you to deal with the timeout in the `AggregationStrategy` if you
really need to.
[NOTE]
-.Timeout is total
====
+.Timeout is total
The timeout is total, which means that after X time, Camel will aggregate the
messages which have completed within the timeframe.
The remainder will be canceled. Camel will also only invoke the `timeout`
method in the `AggregationStrategy` once, for the first index which caused the
timeout.
====
@@ -353,6 +464,11 @@ As we want to use `InOut` with the ActiveMQ (JMS) endpoint
we can now specify th
Then the response from the JMS request/reply will then be continued routed,
and thus the response is what will be stored
in as a file in the outbox directory.
+
+[tabs]
+====
+Java::
++
[source,java]
----
from("file:inbox")
@@ -361,6 +477,36 @@ from("file:inbox")
.to("file:outbox");
----
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="file:inbox"/>
+ <recipientList>
+ <constant>activemq:queue:inbox?exchangePattern=InOut</constant>
+ </recipientList>
+ <to uri="file:outbox"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: file:inbox
+ steps:
+ - recipientList:
+ expression:
+ constant:
+ expression: activemq:queue:inbox?exchangePattern=InOut
+ - to:
+ uri: file:outbox
+----
+====
+
[WARNING]
====
The recipient list will not alter the original exchange pattern. So in the
example above the exchange pattern will still
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/removeProperty-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/removeProperty-eip.adoc
index 95d060d01c2d..32314f92152f 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/removeProperty-eip.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/removeProperty-eip.adoc
@@ -45,6 +45,20 @@ XML::
<to uri="mock:result"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: seda:b
+ steps:
+ - removeProperty:
+ name: myProperty
+ - to:
+ uri: mock:result
+----
====
== See Also
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/removeVariable-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/removeVariable-eip.adoc
index a1b38153728e..01e14a6f9089 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/removeVariable-eip.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/removeVariable-eip.adoc
@@ -45,6 +45,20 @@ XML::
<to uri="mock:result"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: seda:b
+ steps:
+ - removeVariable:
+ name: myVar
+ - to:
+ uri: mock:result
+----
====
TIP: If you want to remove all variables from the `Exchange` then use `*` as
the name.
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/requestReply-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/requestReply-eip.adoc
index dee5e313dcef..72a5f16eb405 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/requestReply-eip.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/requestReply-eip.adoc
@@ -64,6 +64,18 @@ XML::
<to uri="bean:processMessage"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: jms:someQueue?exchangePattern=InOut
+ steps:
+ - to:
+ uri: bean:processMessage
+----
====
== Using setExchangePattern EIP
@@ -92,6 +104,20 @@ XML::
<to uri="jms:queue:cheese"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:foo
+ steps:
+ - setExchangePattern:
+ pattern: InOut
+ - to:
+ uri: jms:queue:cheese
+----
====
When using `setExchangePattern` then the
xref:manual::exchange-pattern.adoc[Exchange Pattern]
@@ -99,15 +125,55 @@ on the xref:manual::exchange.adoc[Exchange] is changed
from this point onwards i
This means you can change the pattern back again at a later point:
+[tabs]
+====
+
+Java::
++
[source,java]
----
from("direct:foo")
.setExchangePattern(ExchangePattern.InOnly)
- .to("jms:queue:one-way");
+ .to("jms:queue:one-way")
.setExchangePattern(ExchangePattern.InOut)
.to("jms:queue:in-and-out")
- .log("InOut MEP received ${body}")
+ .log("InOut MEP received ${body}");
+----
+
+XML::
++
+[source,xml]
----
+ <route>
+ <from uri="direct:foo"/>
+ <setExchangePattern pattern="InOnly"/>
+ <to uri="jms:queue:one-way"/>
+ <setExchangePattern pattern="InOut"/>
+ <to uri="jms:queue:in-and-out"/>
+ <log message="InOut MEP received ${body}"/>
+ </route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:foo
+ steps:
+ - setExchangePattern:
+ pattern: InOnly
+ - to:
+ uri: jms:queue:one-way
+ - setExchangePattern:
+ pattern: InOut
+ - to:
+ uri: jms:queue:in-and-out
+ - log:
+ message: "InOut MEP received ${body}"
+----
+====
NOTE: Using `setExchangePattern` to change the
xref:manual::exchange-pattern.adoc[Exchange Pattern]
is often only used in special use-cases where you must