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 bbb439f  CAMEL-16861: Cleanup and update EIP docs
bbb439f is described below

commit bbb439ff9cf3349e02894e575adc7d89cd1e73a2
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Sep 15 16:32:19 2021 +0200

    CAMEL-16861: Cleanup and update EIP docs
---
 .../docs/modules/eips/pages/claimCheck-eip.adoc    | 39 ++++++++++-------
 .../modules/eips/pages/competing-consumers.adoc    | 49 +++++++++++++++-------
 2 files changed, 60 insertions(+), 28 deletions(-)

diff --git 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/claimCheck-eip.adoc 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/claimCheck-eip.adoc
index f3cf3ef..ce1ac31 100644
--- 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/claimCheck-eip.adoc
+++ 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/claimCheck-eip.adoc
@@ -36,11 +36,11 @@ The Claim Check EIP supports 5 options which are listed 
below:
 
 When using this EIP you must specify the operation to use which can be of the 
following:
 
-* Get - Gets (does not remove) the claim check by the given key.
-* GetAndRemove - Gets and remove the claim check by the given key.
-* Set - Sets a new (will override if key already exists) claim check with the 
given key.
-* Push - Sets a new claim check on the stack (does not use key).
-* Pop - Gets the latest claim check from the stack (does not use key).
+* *Get* - Gets (does not remove) the claim check by the given key.
+* *GetAndRemove* - Gets and remove the claim check by the given key.
+* *Set* - Sets a new (will override if key already exists) claim check with 
the given key.
+* *Push* - Sets a new claim check on the stack (does not use key).
+* *Pop* - Gets the latest claim check from the stack (does not use key).
 
 When using the `Get`, `GetAndRemove`, or `Set` operation you must specify a 
key.
 These operations will then store and retrieve the data using this key. You can 
use this to store multiple data in different keys.
@@ -48,10 +48,11 @@ These operations will then store and retrieve the data 
using this key. You can u
 The `Push` and `Pop` operations do *not* use a key but stores the data in a 
stack structure.
 
 
-== Filter what data to merge back
+== Merging data using get or pop operation
 
-The `filter` option is used to define what data to merge back when using the 
`Get` or `Pop` operation. When data is merged back
-then its merged using a `AggregationStrategy`. The default strategy uses the 
`filter` option to easily specify what data to merge back.
+The `Get`, `GetAndRemove` and `Pop` operations will claim data back from the 
claim check repository.
+The data is then merged with the current data on the exchange, this is done 
with an `AggregationStrategy`.
+The default strategy uses the `filter` option to easily specify what data to 
merge back.
 
 The `filter` option takes a `String` value with the following syntax:
 
@@ -62,7 +63,7 @@ The `filter` option takes a `String` value with the following 
syntax:
 
 The pattern rule supports wildcard and regular expression:
 
-* wildcard match (pattern ends with a `*` and the name starts with the pattern)
+* wildcard match (pattern ends with a `*, and the name starts with the pattern)
 * regular expression match
 
 You can specify multiple rules separated by comma.
@@ -71,30 +72,35 @@ You can specify multiple rules separated by comma.
 
 For example to include the message body and all headers starting with _foo_:
 
+[source,text]
 ----
 body,header:foo*
 ----
 
 To only merge back the message body:
 
+[source,text]
 ----
 body
 ----
 
 To only merge back the message attachments:
 
+[source,text]
 ----
 attachments
 ----
 
 To only merge back headers:
 
+[source,text]
 ----
 headers
 ----
 
 To only merge back a header name foo:
 
+[source,text]
 ----
 header:foo
 ----
@@ -103,7 +109,7 @@ If the filter rule is specified as empty or as wildcard 
then everything is merge
 
 Notice that when merging back data, then any existing data is overwritten, and 
any other existing data is preserved.
 
-=== Fine grained filtering with include and exclude pattern
+=== Filtering with include and exclude patterns
 
 The syntax also supports the following prefixes which can be used to specify 
include,exclude, or remove
 
@@ -112,16 +118,22 @@ The syntax also supports the following prefixes which can 
be used to specify inc
 * `--` = to remove (remove takes precedence)
 
 For example to skip the message body, and merge back everything else
+
+[source,text]
 ----
 -body
 ----
 
 Or to skip the message header foo, and merge back everything else
+
+[source,text]
 ----
 -header:foo
 ----
 
-You can also instruct to remove headers when merging data back, for example to 
remove all headers starting with _bar_:
+You can also instruct removing headers when merging data back, for example to 
remove all headers starting with _bar_:
+
+[source,text]
 ----
 --headers:bar*
 ----
@@ -148,8 +160,7 @@ from("direct:start")
     .to("mock:e");
 ----
 
-
-== Java Examples
+== Example
 
 The following example shows the `Push` and `Pop` operations in action;
 
@@ -204,7 +215,7 @@ from("direct:start")
     .to("mock:c");
 ----
 
-== XML examples
+=== XML examples
 
 The following example shows the `Push` and `Pop` operations in action;
 
diff --git 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/competing-consumers.adoc
 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/competing-consumers.adoc
index 845b39e..0bbf168 100644
--- 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/competing-consumers.adoc
+++ 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/competing-consumers.adoc
@@ -10,10 +10,10 @@ For example from SEDA, JMS, Kafka, and various AWS 
components.
 
 image::eip/CompetingConsumers.gif[image]
 
-- SEDA for SEDA based concurrent processing using a thread pool
-- JMS for distributed SEDA based concurrent processing with queues which 
support reliable load balancing, failover and clustering.
+- xref:components::seda-component.adoc[SEDA] for SEDA based concurrent 
processing using a thread pool
+- xref:components::jms-component.adoc[JMS] for distributed SEDA based 
concurrent processing with queues which support reliable load balancing, 
failover and clustering.
 
-For components which does not allow concurrent consumers, then Camel allows to 
route from the consumer
+For components which does not allow concurrent consumers, then Camel allows 
routeing from the consumer
 to a thread-pool which can then further process the message concurrently,
 which then simulates a _quasi like_ competing consumers.
 
@@ -54,8 +54,18 @@ from("file://inbox?move=../backup-${date:now:yyyyMMdd}")
   .to("bean:calculateBean");
 ----
 
+And in XML DSL
+
+[source,xml]
+----
+<route>
+  <from uri="file://inbox?move=../backup-${date:now:yyyyMMdd}"/>
+  <to uri="bean:calculateBean"/>
+</route>
+----
+
 The route is synchronous and there is only a single consumer running at any 
given time.
-This scenario is well known and it doesn't affect thread safety as we only 
have one active thread
+This scenario is well known, and it doesn't affect thread safety as we only 
have one active thread
 involved at any given time.
 
 Now imagine that the inbox folder is filled with filers quicker than we can 
process.
@@ -63,17 +73,17 @@ So we want to speed up this process. How can we do this?
 
 Well we could try adding a 2nd route with the same route path.
 Well that doesn't work so well as we have competing consumers for the same 
files.
-That requires however that we use file locking so we wont have two consumers 
compete for the same file.
-By default Camel support this with its file locking option on the file 
component.
+That requires however that we use file locking, so we won't have two consumers 
compete for the same file.
+By default, Camel support this with its file locking option on the file 
component.
 
-But what if the component doesn't support this, or its not possible to add a 
2nd consumer
-for the same endpoint? And yes its a bit of a hack and the route logic code is 
duplicated.
+What if the component doesn't support this, or it's not possible to add a 2nd 
consumer
+for the same endpoint? And yes it's _a bit of a hack_, and the route logic 
code is duplicated.
 And what if we need more, then we need to add a 3rd, a 4th and so on.
 
-What if the processing of the file itself is the bottleneck? That is the 
calculateBean is slow.
+What if the processing of the file itself is the bottleneck, i.e. the 
`calculateBean` is slow?
 So how can we process messages with this bean concurrently?
 
-Yeah we can use the xref:threads-eip.adoc[Threads EIP], so if we insert it in 
the route we get:
+We can use the xref:threads-eip.adoc[Threads EIP], so if we insert it in the 
route we get:
 
 [source,java]
 ----
@@ -82,16 +92,27 @@ from("file://inbox?move=../backup-${date:now:yyyyMMdd}")
   .to("bean:calculateBean");
 ----
 
+And in XML DSL
+
+[source,xml]
+----
+<route>
+  <from uri="file://inbox?move=../backup-${date:now:yyyyMMdd}"/>
+  <threads poolSize="10"/>
+  <to uri="bean:calculateBean"/>
+</route>
+----
+
 So by inserting `threads(10)` we have instructed Camel that from this point 
forward in the route
 it should use a thread pool with up till 10 concurrent threads.
-So when the file consumer delivers a message to the threads, then the threads 
take it from there
+So when the file consumer delivers a message to the threads, then the threads 
take it from there,
 and the file consumer can return and continue to poll the next file.
 
 By leveraging this fact we can still use a single file consumer to poll new 
files.
 And polling a directory to just grab the file handle is very fast.
-And we wont have problem with file locking, sorting, filtering and whatnot.
+And we won't have problem with file locking, sorting, filtering and whatnot.
 And at the same time we can leverage the fact that we can process the file 
messages concurrently
-by the calculate bean.
+by the `calculateBean` bean.
 
 Here at the end lets take a closer look what happens with the synchronous 
thread and the
 asynchronous thread. The synchronous thread hands over the exchange to the new 
asynchronous thread and as
@@ -99,7 +120,7 @@ such the synchronous thread completes. The asynchronous 
thread is then routing a
 And when this thread finishes it will take care of the file completion 
strategy to move the file
 into the backup folder. This is an important note, that the on completion is 
done by the asynchronous thread.
 
-This ensures the file is not moved before the file is processed successfully. 
Suppose the calculate bean
+This ensures the file is not moved before the file is processed successfully. 
Suppose the `calculateBean` bean
 could not process one of the files. If it was the asynchronous thread that 
should do the on completion strategy
 then the file would have been moved to early into the backup folder. By 
handing over this to the asynchronous
 thread we do it after we have processed the message completely

Reply via email to