You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/08/11 13:31:06 UTC
[camel] 01/03: Polish and cleanup documentation
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 98250f71699216b26c05ef16df6c5774bec14b4e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 11 14:06:19 2021 +0200
Polish and cleanup documentation
---
.../modules/ROOT/pages/oncompletion.adoc | 76 +++++++++-------------
1 file changed, 30 insertions(+), 46 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/oncompletion.adoc b/docs/user-manual/modules/ROOT/pages/oncompletion.adoc
index 3eb8523..13f140e 100644
--- a/docs/user-manual/modules/ROOT/pages/oncompletion.adoc
+++ b/docs/user-manual/modules/ROOT/pages/oncompletion.adoc
@@ -1,27 +1,25 @@
[[OnCompletion-OnCompletion]]
= OnCompletion
-Camel has this concept of a Unit of Work that encompass the
+Camel has this concept of a _Unit of Work_ that encompass the
Exchange. The unit of work among others supports
synchronization callbacks that are invoked when the
Exchange is complete. The callback API is defined in
-`org.apache.camel.spi.Synchronization`. and the extended synchronization
+`org.apache.camel.spi.Synchronization` and the extended synchronization
`org.apache.camel.spi.SynchronizationRouteAware` that have callbacks for
route events.
-*Getting the UnitOfWork*
+== UnitOfWork API
You can get hold of the `org.apache.camel.spi.UnitOfWork` from
`org.apache.camel.Exchange` with the method `getUnitOfWork()`.
-*OnCompletion DSL*
+== OnCompletion DSL
-The *onCompletion* EIP supports the following features:
+The OnCompletion EIP supports the following features:
-* scope: global and/or per route (route scope override all global scope)
-* multiple global scope
-* triggered either always, only if completed with success, or only if
-failed
+* level: context or route (route level override global level)
+* triggered either always, only if completed with success, or only if failed
* `onWhen` predicate to only trigger if matched
* `mode` to define whether to run either before or after
route consumer writes response back to callee (if its InOut) (default AfterConsumer)
@@ -35,22 +33,21 @@ allows to modify the exchange before the consumer writes back any
response to the callee. You can use this to for example add customer
headers, or send to a log to log the response message, etc.
-[[OnCompletion-onCompletionwithroutescope]]
-== onCompletion with route scope
+=== onCompletion with route scope
-The *onCompletion* DSL allows you to add custom routes/processors when
+The OnCompletion EIP allows you to add custom routes/processors when
the original Exchange is complete. Camel spins off a
copy of the Exchange and routes it in a separate
thread, similar to a Wire Tap. This allows the
-original thread to continue while the *onCompletion* route is running
+original thread to continue while the onCompletion route is running
concurrently. We chose this model as we did not want the
-*onCompletion* route to interfere with the original route.
+onCompletion route to interfere with the original route.
-*Multiple onCompletions allowed at both route and global scope*
+=== Multiple onCompletions
-You may define multiple onCompletions at both context and route scope.
-When you define route scoped
-onCompletions then any context scoped are disabled for that given route.
+You may define multiple onCompletions at both context and route level.
+
+When you define route level onCompletions then any context levels are disabled for that given route.
[source,java]
-----------------------------------------------------------
@@ -67,7 +64,7 @@ from("direct:start")
.to("mock:result");
-----------------------------------------------------------
-By default the *onCompletion* will be triggered when the
+By default the OnCompletion EIP will be triggered when the
Exchange is complete and regardless if the
Exchange completed with success or with a failure
(such as an Exception was thrown). You can limit the trigger to only
@@ -92,11 +89,9 @@ from("direct:start")
-----------------------------------------------------------
You can identify if the Exchange is an
-*onCompletion* Exchange as Camel will add the
-property `Exchange.ON_COMPLETION` with a boolean value of `true` when it
-spin-off the *onCompletion* Exchange.
+OnCompletion Exchange as Camel will add the
+property `Exchange.ON_COMPLETION` with a boolean value of `true`.
-[[OnCompletion-UsingonCompletionfromSpringDSL]]
=== Using onCompletion from XML DSL
The onCompletion is defined like this with XML DSL:
@@ -118,7 +113,7 @@ The onCompletion is defined like this with XML DSL:
----
And the `onCompleteOnly` and `onFailureOnly` is defined as a boolean
-attribute on the <onCompletion> tag so the failure example would be:
+attribute on the `<onCompletion>` tag, so the failure example would be:
[source,xml]
----
@@ -135,10 +130,9 @@ attribute on the <onCompletion> tag so the failure example would be:
</route>
----
-[[OnCompletion-onCompletionwithglobalscope]]
-== onCompletion with global scope
+=== onCompletion with global level
-This works just like the route scope except from the fact that they are
+This works just like the route level except from the fact that they are
defined globally. An example below:
[source,java]
@@ -151,11 +145,7 @@ from("direct:start")
.to("mock:result");
----
-[[OnCompletion-UsingonCompletionfromSpringDSL.1]]
-=== Using onCompletion from Spring DSL
-
-This works just like the route scope except from the fact that they are
-defined globally. An example below:
+And in XML:
[source,xml]
----
@@ -173,19 +163,16 @@ defined globally. An example below:
</route>
----
-
-*Route scope override Global scope*
-If an *onCompletion* is defined in a route, it overrides *all* global
+IMPORTANT: If an OnCompletion is defined in a route, it overrides *all* global
scoped and thus it is only the route scoped that are used. The globally
scoped are not in use.
-[[OnCompletion-UsingonCompletionwithonWhenpredicate]]
-== Using onCompletion with onWhen predicate
+=== Using onCompletion with onWhen predicate
As other DSL in Camel you can attach a predicate to
-the *onCompletion* so it only triggers in certain conditions, when the
+the OnCompletion so it only triggers in certain conditions, when the
predicate matches. For example to only trigger if the message body contains the word
-`Hello` we can do like:
+_Hello_ we can do like:
[source,java]
----
@@ -202,7 +189,6 @@ from("direct:start")
.to("mock:result");
----
-[[OnCompletion-UsingonCompletionwithorwithoutthreadpool]]
== Using onCompletion with or without thread pool
To use thread pool then either set a `executorService` or set
@@ -218,7 +204,7 @@ onCompletion().parallelProcessing()
.setBody(simple("OnComplete:${body}"));
----
-And in XML DSL
+And in XML DSL:
[source,xml]
----
@@ -230,7 +216,7 @@ And in XML DSL
----
You can also refer to a specific thread pool
-to be used, using the executorServiceRef option
+to be used, using the `executorServiceRef` option
[source,xml]
----
@@ -241,11 +227,9 @@ to be used, using the executorServiceRef option
</onCompletion>
----
+=== OnCompletion consumer modes
-[[OnCompletion-UsingonCompletiontorunbeforerouteconsumersendsbackresponsetocallee]]
-== Using onCompletion to run before route consumer sends back response to callee
-
-OnCompletion supports two modes
+OnCompletion supports two modes that affects the route consumer:
* AfterConsumer - Default mode which runs after the consumer is done
* BeforeConsumer - Runs before the consumer is done, and before the