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 f4fd35fc3fbf cleanup faq (#21698)
f4fd35fc3fbf is described below

commit f4fd35fc3fbfc59a0b1db2f1f8c5d3d6077f4af1
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Mar 4 20:30:17 2026 +0100

    cleanup faq (#21698)
    
    * CAMEL-16861: Cleanup docs
---
 .../camel-jetty/src/main/docs/jetty-component.adoc |  33 ++-
 .../camel-spring/src/main/docs/spring-summary.adoc |   3 -
 .../src/main/docs/undertow-component.adoc          |  36 ++-
 docs/user-manual-nav.adoc.template                 |   1 -
 docs/user-manual/modules/ROOT/pages/component.adoc |   2 +-
 .../modules/ROOT/pages/consumertemplate.adoc       |  21 ++
 docs/user-manual/modules/ROOT/pages/endpoint.adoc  | 278 ++++++++++++++++++-
 .../modules/ROOT/pages/error-handler.adoc          | 181 ++++++++++++
 docs/user-manual/modules/ROOT/pages/index.adoc     |   1 -
 .../modules/ROOT/pages/producertemplate.adoc       |  76 +++++
 docs/user-manual/modules/ROOT/pages/routes.adoc    |  45 +++
 .../modules/ROOT/pages/stream-caching.adoc         |  42 +++
 docs/user-manual/modules/ROOT/pages/uris.adoc      |   2 +-
 docs/user-manual/modules/faq/nav.adoc              |  19 --
 ...an-i-create-a-custom-component-or-endpoint.adoc |   5 -
 .../faq/pages/how-can-i-get-the-source-code.adoc   |   9 +-
 .../faq/pages/how-do-i-configure-endpoints.adoc    | 305 ---------------------
 ...-endpoints-without-the-value-being-encoded.adoc |  11 -
 ...size-for-producercache-or-producertemplate.adoc |  31 ---
 ...ximum-endpoint-cache-size-for-camelcontext.adoc |  37 ---
 .../modules/faq/pages/how-do-i-debug-my-route.adoc |  14 -
 .../modules/faq/pages/how-do-i-disable-jmx.adoc    |  38 ---
 .../faq/pages/how-do-i-enable-debug-logging.adoc   |  32 ---
 ...reams-when-debug-logging-messages-in-camel.adoc |  54 ----
 ...en-consuming-for-example-from-a-ftp-server.adoc |  25 --
 ...how-do-i-import-rests-from-other-xml-files.adoc |  85 ------
 ...ow-do-i-import-routes-from-other-xml-files.adoc |  44 ---
 .../pages/how-do-i-let-jetty-match-wildcards.adoc  |  30 --
 ...ow-do-i-make-my-jms-endpoint-transactional.adoc |  25 --
 .../modules/faq/pages/how-do-i-name-my-routes.adoc |  32 ---
 .../faq/pages/how-do-i-restart-camelcontext.adoc   |  11 -
 ...wn-exception-during-processing-an-exchange.adoc |  53 ----
 .../how-do-i-retry-failed-messages-forever.adoc    |  18 --
 ...om-a-certain-point-back-or-an-entire-route.adoc |  91 ------
 docs/user-manual/modules/faq/pages/index.adoc      |  19 --
 .../pages/why-cant-i-use-sign-in-my-password.adoc  |   4 -
 ...-file-consumer-use-the-camel-error-handler.adoc |   2 -
 37 files changed, 712 insertions(+), 1003 deletions(-)

diff --git a/components/camel-jetty/src/main/docs/jetty-component.adoc 
b/components/camel-jetty/src/main/docs/jetty-component.adoc
index 79dd74ac2742..f9f9f926ea41 100644
--- a/components/camel-jetty/src/main/docs/jetty-component.adoc
+++ b/components/camel-jetty/src/main/docs/jetty-component.adoc
@@ -92,10 +92,39 @@ the numerical IP address of this interface should be used 
as the host.
 If you need to expose a Jetty endpoint on all network interfaces, the
 `0.0.0.0` address should be used.
 
-To listen across an entire URI prefix, see
-xref:manual:faq:how-do-i-let-jetty-match-wildcards.adoc[How do I let Jetty 
match wildcards].
+To listen across an entire URI prefix, see below.
 ====
 
+=== How do I let Jetty match wildcards?
+
+By default, Jetty will only match on exact uri's. But you can instruct Jetty 
to match prefixes. For example:
+
+[source,java]
+----
+from("jetty://0.0.0.0:8123/foo").to("mock:foo");
+----
+
+In the route above Jetty will only match if the uri is
+an exact match, so it will match if you enter
+`\http://0.0.0.0:8123/foo` but not match if you do
+`\http://0.0.0.0:8123/foo/bar`.
+
+So if you want to enable wildcard matching you need to set 
`matchOnUriPrefix=true` as follows:
+
+[source,java]
+----
+from("jetty://0.0.0.0:8123/foo?matchOnUriPrefix=true").to("mock:foo");
+----
+
+So now Jetty matches any endpoints with starts with `foo`.
+
+To match *any* endpoint you can remove the prefix so it will match anything 
from the root:
+
+[source,java]
+----
+from("jetty://0.0.0.0:8123?matchOnUriPrefix=true").to("mock:foo");
+----
+
 === Servlets
 
 If you actually want to expose routes by HTTP and already have a
diff --git 
a/components/camel-spring-parent/camel-spring/src/main/docs/spring-summary.adoc 
b/components/camel-spring-parent/camel-spring/src/main/docs/spring-summary.adoc
index aa7c86f90664..9b4a9d251b0f 100644
--- 
a/components/camel-spring-parent/camel-spring/src/main/docs/spring-summary.adoc
+++ 
b/components/camel-spring-parent/camel-spring/src/main/docs/spring-summary.adoc
@@ -398,9 +398,6 @@ the above example), then you can refer to the component 
using
 SpringCamelContext lazily fetching components from the spring context
 for the scheme name you use for Endpoint URIs.
 
-For more details, see 
xref:manual:faq:how-do-i-configure-endpoints.adoc[Configuring
-Endpoints and Components].
-
 == CamelContextAware
 
 If you want the `CamelContext` to be injected
diff --git a/components/camel-undertow/src/main/docs/undertow-component.adoc 
b/components/camel-undertow/src/main/docs/undertow-component.adoc
index f627611dd5f9..b76a2127c353 100644
--- a/components/camel-undertow/src/main/docs/undertow-component.adoc
+++ b/components/camel-undertow/src/main/docs/undertow-component.adoc
@@ -85,13 +85,43 @@ the numerical IP address of this interface should be used 
as the host.
 If you need to expose an Undertow endpoint on all network interfaces, the
 `0.0.0.0` address should be used.
 
-To listen across an entire URI prefix, see
-xref:manual:faq:how-do-i-let-jetty-match-wildcards.adoc[How do I let Jetty 
match wildcards?].
-
 If you actually want to expose routes by HTTP and already have a
 Servlet, you should instead refer to the
 xref:servlet-component.adoc[Servlet Transport].
 
+To listen across an entire URI prefix see next section.
+
+=== How do I let Undertow match wildcards?
+
+By default, Undertow will only match on exact uri's. But you can instruct 
Undertow to match prefixes. For example:
+
+[source,java]
+----
+from("undertow:http://0.0.0.0:8123/foo";).to("mock:foo");
+----
+
+In the route above Undertow will only match if the uri is
+an exact match, so it will match if you enter
+`\http://0.0.0.0:8123/foo` but not match if you do
+`\http://0.0.0.0:8123/foo/bar`.
+
+So if you want to enable wildcard matching you need to set 
`matchOnUriPrefix=true` as follows:
+
+[source,java]
+----
+from("undertow:http://0.0.0.0:8123/foo?matchOnUriPrefix=true";).to("mock:foo");
+----
+
+So now Undertow matches any endpoints with starts with `foo`.
+
+To match *any* endpoint you can remove the prefix so it will match anything 
from the root:
+
+[source,java]
+----
+from("undertow:http://0.0.0.0:8123?matchOnUriPrefix=true";).to("mock:foo");
+----
+
+
 === Security provider
 
 To plug in a security provider for endpoint authentication, implement SPI 
interface
diff --git a/docs/user-manual-nav.adoc.template 
b/docs/user-manual-nav.adoc.template
index 3a39b7449624..1a370739c62a 100644
--- a/docs/user-manual-nav.adoc.template
+++ b/docs/user-manual-nav.adoc.template
@@ -103,7 +103,6 @@
  ** xref:faq:how-do-i-restart-camelcontext.adoc[How do I restart CamelContext?]
  ** 
xref:faq:how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.adoc[How
 do I retrieve the thrown Exception during processing an Exchange?]
  ** xref:faq:how-do-i-retry-failed-messages-forever.adoc[How do I retry failed 
messages forever?]
- ** 
xref:faq:how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.adoc[How
 do I retry processing a message from a certain point back or an entire route?]
  ** 
xref:faq:how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.adoc[How 
do I reuse the ContextTestSupport class in my unit tests?]
  ** xref:faq:how-do-i-run-activemq-and-camel-in-jboss.adoc[How do I run 
ActiveMQ and Camel in JBoss?]
  ** 
xref:faq:how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.adoc[How
 do I set the max chars when debug logging messages in Camel?]
diff --git a/docs/user-manual/modules/ROOT/pages/component.adoc 
b/docs/user-manual/modules/ROOT/pages/component.adoc
index a29642e31df3..81f2f7dc1f54 100644
--- a/docs/user-manual/modules/ROOT/pages/component.adoc
+++ b/docs/user-manual/modules/ROOT/pages/component.adoc
@@ -124,7 +124,7 @@ Camel identifies the components in the above example as 
`pop3`, `jms`, `urn`, an
 
 [NOTE]
 ====
-Make sure to read xref:faq:how-do-i-configure-endpoints.adoc[How do I 
configure endpoints?]
+Make sure to read xref:endpoint.adoc[Endpoint]
 to learn more about configuring endpoints. For example, how to refer to beans 
in the xref:registry.adoc[Registry] or how
 to use raw values for password options, and using 
xref:using-propertyplaceholder.adoc[property placeholders] etc.
 ====
diff --git a/docs/user-manual/modules/ROOT/pages/consumertemplate.adoc 
b/docs/user-manual/modules/ROOT/pages/consumertemplate.adoc
index 5b04ac70e7b6..57334d6e925a 100644
--- a/docs/user-manual/modules/ROOT/pages/consumertemplate.adoc
+++ b/docs/user-manual/modules/ROOT/pages/consumertemplate.adoc
@@ -45,6 +45,27 @@ body = template.receiveBody("activemq:MyQueue", 5000);
 
 Here we wait at most 5 seconds for a message to be consumed, if there was no 
message, then `null` is returned as response.
 
+== Configuring default cache size
+
+You can configure globally the default cache size for both `ProducerTemplate` 
and `ConsumerTemplate`
+which will be created or dependency inject by `CamelContext`.
+
+This can be done on the `CamelContext` as a global option as shown in the 
following Java code:
+
+[source,java]
+----
+getCamelContext().getGlobalOptions().put(Exchange.MAXIMUM_CACHE_POOL_SIZE, 
"50");
+----
+
+Or in `application.properties`:
+
+[source,properties]
+----
+camel.main.consumerTemplateCacheSize = 50
+----
+
+The default maximum cache size is 1000.
+
 == See Also
 
 See xref:producertemplate.adoc[ProducerTemplate]
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/endpoint.adoc 
b/docs/user-manual/modules/ROOT/pages/endpoint.adoc
index 704a7bb9bc9f..f73805fb9458 100644
--- a/docs/user-manual/modules/ROOT/pages/endpoint.adoc
+++ b/docs/user-manual/modules/ROOT/pages/endpoint.adoc
@@ -47,7 +47,283 @@ YAML::
 ----
 ====
 
-== Endpoint API
+=== Referring beans from endpoints
+
+When configuring endpoints using the URI syntax you can refer to beans
+in the xref:registry.adoc[Registry] using the `#bean:id` notation.
+
+NOTE: The older syntax with just `#id` has been deprecated due to ambiguity
+as Camel supports a number of additional functions that start with the # 
notation.
+
+If the URI parameter value starts with `#bean:` then Camel will lookup in
+the xref:registry.adoc[Registry] for a bean of the given type by id. For 
instance:
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("file:messages/foo?sorter=#bean:mySpecialFileSorter")
+    .to("jms:queue:foo");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="file:messages/foo?sorter=#bean:mySpecialFileSorter"/>
+    <to uri="jms:queue:foo"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:messages/foo?sorter=#bean:mySpecialFileSorter
+      steps:
+        - to:
+            uri: jms:queue:foo
+----
+====
+
+Will lookup a bean with the id `mySpecialFileSorter` in the Registry.
+
+==== Referring beans by class
+
+Camel also supports to refer to beans by their class type, such as 
`#class:com.foo.MySpecialSorter`,
+which then will create a new bean instance of the given class name.
+
+If you need to provide parameters to the constructor, then this is also 
possible
+(limited to numbers, boolean, literal, and null values)
+
+[source,text]
+----
+file://inbox?sorter=#class:com.foo.MySpecialSorter(10, 'Hello world', true)
+----
+
+TIP: Inlining constructor arguments is only recommended for beans with a few 
options so the code is easy to understand and maintain.
+Also beware that if the bean constructor is refactored then the string text 
would need to be updated accordingly.
+
+==== Referring beans by type
+
+When configuring endpoints using URI syntax you can now refer to bean by its 
type which
+are used to lookup the bean by the given type from the 
xref:ROOT:registry.adoc[Registry].
+
+If there is one bean found in the registry of the given type, then that bean 
instance will be used;
+otherwise an exception is thrown.
+
+For example below we expect there is a single bean of the 
`org.apache.camel.spi.IdempotentRepository` type
+in the xref:registry.adoc[Registry] that the file endpoint should use.
+
+[source,text]
+----
+file://inbox?idempontentRepository=#type:org.apache.camel.spi.IdempotentRepository
+----
+
+=== Configuring parameter values using raw values, such as passwords
+
+When configuring endpoint options using URI syntax, then the values is
+by default URI encoded. This can be a problem if you want to configure
+passwords and just use the value _as is_ without any encoding. For
+example, you may have a plus sign in the password, which would be decimal
+encoded by default.
+
+You can define parameter value to be *raw* using the following syntax 
`RAW(value)`, e.g.
+the value starts with `RAW(` and then ends with the parenthesis `)`.
+
+Here is a little example with the password: `se+re?t&23`:
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("file:inbox")
+  .to("ftp:[email protected]?password=RAW(se+re?t&23)&binary=true");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="file:inbox"/>
+    <to 
uri="ftp:[email protected]?password=RAW(se+re?t&amp;23)&amp;binary=true"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:inbox
+      steps:
+        - to:
+            uri: ftp:[email protected]?password=RAW(se+re?t&23)&binary=true
+----
+
+YAML expanded::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file
+      parameters:
+        directoryName: inbox
+      steps:
+        - to:
+            uri: ftp
+            parameters:
+              host: [email protected]
+              password: "RAW(se+re?t&23)"
+              binary: true
+----
+====
+
+In the above example, we have declared the password value as raw, and the
+actual password would be as typed, eg `se+re?t&23`.
+
+NOTE: you may find a corner case when you use both `)` and `&` character as 
part of your password (ie, `se+re)t&23`). The parser will interpret the `)` as 
closing the `RAW` function and having a parameter started by `&`. In such case, 
you can instead use the `RAW{}` notation to let you include the `)` character 
and have it decoded as part of the password (ie, `RAW{se+re)t&23}`). As a safe 
alternative you can also use `password=#property:myPass` and then have `myPass` 
a xref:ROOT:property [...]
+
+==== Using ENV variables with raw values
+
+If you need to use environment variables, for example as username or passwords 
then this is now possible by inlining
+the xref:components:languages:simple-language.adoc[Simple] language
+using `+++$simple{xxx}+++` syntax in `RAW(...)` as shown below:
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("file:inbox")
+  
.to("ftp:[email protected]?password=RAW($simple{env:MY_FTP_PASSWORD})&binary=true");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="file:inbox"/>
+    <to 
uri="ftp:[email protected]?password=RAW($simple{env:MY_FTP_PASSWORD})&amp;binary=true"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:inbox
+      steps:
+        - to:
+            uri: 
"ftp:[email protected]?password=RAW($simple{env:MY_FTP_PASSWORD})&binary=true"
+----
+
+====
+
+=== Endpoint URIs with property placeholders
+
+Camel has extensive support for using xref:using-propertyplaceholder.adoc[].
+
+For example in the ftp example above we can externalize the password to the 
`application.properties` file.
+
+[source,properties]
+----
+myFtpPassword=RAW(se+re?t&23)
+----
+
+And the Camel routes can then refer to this placeholder using `{\{key}}` style.
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("file:inbox")
+  .to("ftp:[email protected]?password={{myFtpPassword}}&binary=true");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="file:inbox"/>
+    <to 
uri="ftp:[email protected]?password={{myFtpPassword}}&amp;binary=true"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:inbox
+      steps:
+        - to:
+            uri: 
"ftp:[email protected]?password={{myFtpPassword}}&binary=true"
+----
+====
+
+And have a `application.properties` file with password. Notice we still define
+the `RAW(value)` style to ensure the password is used _as is_:
+
+[source,properties]
+----
+myFtpPassword=RAW(se+re?t&23)
+----
+
+We could still have used the `RAW(value)` in the Camel route instead:
+
+[source,java]
+----
+.to("ftp:[email protected]?password=RAW({{myFtpPassword}})&binary=true")
+----
+
+And then we would need to remove the `RAW` from the properties file:
+
+[source,properties]
+----
+myFtpPassword=se+re?t&23
+----
+
+== Configuring CamelContext default cache size
+
+The xref:ROOT:camelcontext.adoc[CamelContext] will by default cache the last 
1000
+used endpoints (based on a LRUCache).
+
+This must be done on the `CamelContext` as a global option as shown in the 
following Java code:
+
+[source,java]
+----
+getCamelContext().getGlobalOptions().put(Exchange.MAXIMUM_ENDPOINT_CACHE_SIZE, 
"500");
+----
+
+The default maximum cache size is 1000.
+
+You need to configure this before xref:ROOT:camelcontext.adoc[CamelContext] is 
started.
+
+
+== Java Endpoint API
 
 You will almost never have the need for creating endpoints manually via Java 
API.
 
diff --git a/docs/user-manual/modules/ROOT/pages/error-handler.adoc 
b/docs/user-manual/modules/ROOT/pages/error-handler.adoc
index b601e5e9b539..0f46fd93054e 100644
--- a/docs/user-manual/modules/ROOT/pages/error-handler.adoc
+++ b/docs/user-manual/modules/ROOT/pages/error-handler.adoc
@@ -330,3 +330,184 @@ See 
xref:components:eips:transactional-client.adoc[Transactional Client] that ha
 samples for how to use and transactional behavior and configuration with
 this error handler.
 
+== How do I retry failed messages forever?
+
+If you want to keep the bad message in the original system (such as a message 
broker),
+then you are also blocking the following messages that has arrived on the 
queue after the bad
+message.
+
+For example with  xref:components::activemq-component.adoc[ActiveMQ], Camel 
will retry consuming a message up til 6 times before
+its moved to the default dead letter queue on the broker (this is ActiveMQ 
broker specific).
+
+If you configure the xref:defaulterrorhandler.adoc[Default Error Handler] or 
xref:components:eips:dead-letter-channel.adoc[Dead Letter Channel]
+to use `maximumRedeliveries = -1` then Camel will retry forever.
+
+IMPORTANT: Beware that there is a difference between letting Camel retry 
processing a message, such as Camel fails to route a message to an external 
system (producer) vs
+consuming messages from a messaging system that offers redelivery such as 
xref:components::activemq-component.adoc[ActiveMQ]. The latter allows
+to roll back the entire message and attempt processing the same message again 
from Camel.
+
+If an external system such as 
xref:components::activemq-component.adoc[ActiveMQ] is redelivering a message,
+then Camel enriches the message with headers that mark this.
+
+The `CamelRedeliveryCounter` contains the number of times it has been 
redelivered.
+The `CamelRedelivered` contains a boolean if its redelivered or if it is the 
first time the message is processed.
+
+See also xref:components:eips:transactional-client.adoc[Transactional Client].
+
+
+== How do I retry processing a message from a certain point back or an entire 
route
+
+By default, Camel will perform any redelivery (retry) attempts
+from the point of failure. So if you want to retry from a point before
+this, you would need to split up your route.
+
+In the example below we have 2 routes (`direct:start`, `direct:sub`). In
+case of a failure anywhere in the `direct:sub` route, then the entire
+route is retried. This happens because we have instructed the `direct:sub`
+route to not use any error handler (e.g. the no error handler). Then we
+link the routes using the xref:components::direct-component.adoc[Direct] 
component by calling
+the sub route from the 1st route.
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+// in case of io exception then try to redeliver up till 2 times
+// (do not use any delay due faster unit testing)
+onException(IOException.class)
+    .maximumRedeliveries(2).redeliveryDelay(0);
+
+from("direct:start")
+    .to("mock:a")
+    // call sub route (using direct)
+    .to("direct:sub")
+    .to("mock:c");
+
+from("direct:sub")
+    // disable error handler, so the entire route can be retried in case of 
redelivery
+    .errorHandler(noErrorHandler())
+    .to("mock:b")
+    .bean("myProcessor");
+----
+
+Spring XML::
++
+[source,xml]
+----
+<!-- this is the processor that will fail the first 2 attempts -->
+<bean id="myProcessor" 
class="org.apache.camel.processor.RedeliverToSubRouteTest.MyProcessor"/>
+
+<camelContext xmlns="http://camel.apache.org/schema/spring";>
+
+    <!-- setup no error handler with an id, we refer to from the 2nd route -->
+    <errorHandler id="noErrorHandler" type="NoErrorHandler"/>
+
+    <!-- configure on exception to redelivery at most 2 times when an 
IOException was thrown
+         do not use redelivery delay to run unit test faster -->
+    <onException>
+        <exception>java.io.IOException</exception>
+        <redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="0"/>
+    </onException>
+
+    <!-- 1st route, no need to setup error handler, as it will use the default 
error handler -->
+    <route>
+        <from uri="direct:start"/>
+        <to uri="mock:a"/>
+        <to uri="direct:sub"/>
+        <to uri="mock:c"/>
+    </route>
+
+    <!-- disable error handler on this route, so the entire route can be 
redelivered
+         when called from the 1st route -->
+    <route errorHandlerRef="noErrorHandler">
+        <from uri="direct:sub"/>
+        <to uri="mock:b"/>
+        <process ref="myProcessor"/>
+    </route>
+</camelContext>
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="direct:start"/>
+    <onException>
+        <exception>java.io.IOException</exception>
+        <redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="0"/>
+    </onException>
+    <to uri="mock:a"/>
+    <to uri="direct:sub"/>
+    <to uri="mock:c"/>
+</route>
+
+<route>
+    <errorHandler>
+        <noErrorHandler/>
+    </errorHandler>
+    <from uri="direct:sub"/>
+    <to uri="mock:b"/>
+    <process ref="myProcessor"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: direct:start
+      steps:
+        - onException:
+            exception:
+              - java.io.IOException
+        - redeliveryPolicy:
+            maximumRedeliveries: 2
+            redeliveryDelay: 0
+        - to:
+            uri: mock:a
+        - to:
+            uri: direct:sub
+        - to:
+            uri: mock:c
+
+- route:
+    errorHandler:
+      noErrorHandler: {}
+    from:
+      uri: direct:sub
+      steps:
+        - to:
+            uri: mock:b
+        - process:
+            ref: myProcessor
+----
+
+====
+
+The code above is based on a unit test, and as you can see the
+processor below is configured to fail the first 2 attempts.
+So that means the entire `direct:sub` route is redelivered, meaning that
+the `mock:b` endpoint receives the incoming message again.
+
+[source,java]
+----
+public static class MyProcessor implements Processor {
+
+    private int counter;
+
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        // use a processor to simulate error in the first 2 calls
+        if (counter++ < 2) {
+            throw new IOException("Forced");
+        }
+        exchange.getIn().setBody("Bye World");
+    }
+}
+----
diff --git a/docs/user-manual/modules/ROOT/pages/index.adoc 
b/docs/user-manual/modules/ROOT/pages/index.adoc
index ecee94f6b679..2a2403e425dc 100644
--- a/docs/user-manual/modules/ROOT/pages/index.adoc
+++ b/docs/user-manual/modules/ROOT/pages/index.adoc
@@ -46,7 +46,6 @@ For a deeper and better understanding of Apache Camel, an 
xref:faq:what-is-camel
 * xref:getting-started.adoc[Getting Started]
 * xref:book-getting-started.adoc[Longer Getting Started Guide]
 * xref:spring.adoc[Working with Camel and Spring]
-* xref:faq:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
 * xref:camelcontext-autoconfigure.adoc[Auto Configuration]
 * xref:bean-integration.adoc[Bean Integration]
 * xref:configuring-route-startup-ordering-and-autostartup.adoc[Configuring 
route startup ordering and autostartup]
diff --git a/docs/user-manual/modules/ROOT/pages/producertemplate.adoc 
b/docs/user-manual/modules/ROOT/pages/producertemplate.adoc
index 9a6f59db008d..783a9d684857 100644
--- a/docs/user-manual/modules/ROOT/pages/producertemplate.adoc
+++ b/docs/user-manual/modules/ROOT/pages/producertemplate.adoc
@@ -109,6 +109,82 @@ Object result = FluentProducerTemplate.on(context)
     .request();
 ----
 
+== How do I retrieve the thrown Exception during processing an Exchange?
+
+You have sent an Exchange to Camel, but it fails during processing caused
+by a thrown Exception. How do I retrieve this Exception?
+
+If you are using CamelTemplate (or CamelProducer), then it is common to
+use the sendBody/requestBody methods that returns the exchange body
+response *only*. So if there was a thrown exception during processing
+Camel is not rethrowing this Exception. To remedy this you can use the
+plain send/request methods that accepts an Exchange object and returns
+an Exchange object.
+
+From the returned Exchange you can test if it has failed and get the caused
+exception. This is illustrated in the code sample:
+
+[source,java]
+----
+@Test
+public void testOk() {
+    int result = (Integer) template.sendBody("direct:input", 
ExchangePattern.InOut, "Hello London");
+    assertEquals(1, result);
+}
+
+@Test
+public void testFailure() {
+    // must create an exchange to get the result as an exchange where we can 
get the caused exception
+    Exchange exchange = 
getMandatoryEndpoint("direct:input").createExchange(ExchangePattern.InOut);
+    exchange.getIn().setBody("Hello Paris");
+
+    Exchange out = template.send("direct:input", exchange);
+    assertTrue("Should be failed", out.isFailed());
+    assertTrue("Should be IllegalArgumentException", out.getException() 
instanceof IllegalArgumentException);
+    assertEquals("Forced exception", out.getException().getMessage());
+}
+
+protected RouteBuilder createRouteBuilder() throws Exception {
+    return new RouteBuilder() {
+        public void configure() throws Exception {
+            from("direct:input").bean(new ExceptionBean());
+        }
+    };
+}
+
+public static class ExceptionBean {
+    public int doSomething(String request) throws Exception {
+        if (request.equals("Hello London")) {
+            return 1;
+        } else {
+            throw new IllegalArgumentException("Forced exception");
+        }
+    }
+}
+----
+
+== Configuring default cache size
+
+You can configure globally the default cache size for both `ProducerTemplate` 
and `ConsumerTemplate`
+which will be created or dependency inject by `CamelContext`.
+
+This can be done on the `CamelContext` as a global option as shown in the 
following Java code:
+
+[source,java]
+----
+getCamelContext().getGlobalOptions().put(Exchange.MAXIMUM_CACHE_POOL_SIZE, 
"50");
+----
+
+Or in `application.properties`:
+
+[source,properties]
+----
+camel.main.producerTemplateCacheSize = 50
+----
+
+The default maximum cache size is 1000.
+
+
 == See Also
 
 See xref:consumertemplate.adoc[ConsumerTemplate]
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/routes.adoc 
b/docs/user-manual/modules/ROOT/pages/routes.adoc
index 13fdc400842b..db45fb736e46 100644
--- a/docs/user-manual/modules/ROOT/pages/routes.adoc
+++ b/docs/user-manual/modules/ROOT/pages/routes.adoc
@@ -44,6 +44,51 @@ YAML::
 ----
 ====
 
+== Naming routes
+
+You can assign names to your routes in Java DSL using `routeId`:
+
+[tabs]
+====
+
+Java::
++
+In Java DSL you use `routeId` to declare the name/id of the route.
++
+[source,java]
+----
+from("ftp:myserver/folder").routeId("myRoute")
+  .to("activemq:queue:cheese");
+----
+
+XML::
++
+In XML DSL you use `id` in the `<route>` element to declare the name/id of the 
route.
++
+[source,xml]
+----
+<route id="myRoute">
+  <from uri="ftp:myserver/folder"/>
+  <to uri="activemq:queue:cheese"/>
+</route>
+----
+
+YAML::
++
+In YAML DSL you use `id` in the `- route` node to declare the name/id of the 
route.
++
+[source,yaml]
+----
+- route:
+    id: myRoute
+    from:
+      uri: ftp:myserver/folder
+      steps:
+        - to:
+            uri: activemq:queue:cheese
+----
+====
+
 
 == Route Description and Notes
 
diff --git a/docs/user-manual/modules/ROOT/pages/stream-caching.adoc 
b/docs/user-manual/modules/ROOT/pages/stream-caching.adoc
index c3f3fc5d525c..cacd2bf15244 100644
--- a/docs/user-manual/modules/ROOT/pages/stream-caching.adoc
+++ b/docs/user-manual/modules/ROOT/pages/stream-caching.adoc
@@ -338,3 +338,45 @@ from("direct:start")
     .process(new StreamCachingProcessor())
     .to("log:cached");
 ----
+
+== How do I enable streams when debug logging messages in Camel
+
+When you run Camel with `DEBUG` level as logging, it will log the
+messages and its content from time to time.
+As some messages can contain streams, which are prone to be not readable
+multiple times, and therefore Camel will by default *not* log these
+types.
+
+These are typical instances which are not logged by default:
+
+* `java.xml.transform.StreamSource`
+* `java.io.InputStream`
+* `java.io.OutputStream`
+* `java.io.Reader`
+* `java.io.Writer`
+
+You will see this in the log as:
+
+[source,log]
+----
+DEBUG ProducerCache                  - >>>> Endpoint[direct:start] 
Exchange[Message: [Body is instance of java.xml.transform.StreamSource]]
+----
+
+Here we have a message which is XML stream based.
+You can customize whether Camel should log the payload anyway.
+
+You can enable this as a global option on `CamelContext` from Java:
+
+[source,java]
+----
+context.getGlobalOptions().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");
+----
+
+In `application.properties` this can also be done as shown:
+
+[source,properties]
+----
+camel.main.globalOptions[CamelLogDebugBodyStreams] = true
+----
+
+Notice default is `false`.
diff --git a/docs/user-manual/modules/ROOT/pages/uris.adoc 
b/docs/user-manual/modules/ROOT/pages/uris.adoc
index 58df63d9349d..d5618e05e9ed 100644
--- a/docs/user-manual/modules/ROOT/pages/uris.adoc
+++ b/docs/user-manual/modules/ROOT/pages/uris.adoc
@@ -20,4 +20,4 @@ The query parameters have two parameters:
 
 == More Information
 
-You can read the guide xref:faq:how-do-i-configure-endpoints.adoc[How do I 
configure endpoints] to learn more about configuring _endpoints_. Among other 
things, this guide explains how to refer to beans in the 
xref:registry.adoc[registry], how to use raw values for password options, how 
to use xref:using-propertyplaceholder.adoc[property placeholders], or how to 
use the type safe xref:Endpoint-dsl.adoc[Endpoint DSL] and 
xref:dataformat-dsl.adoc[DataFormat DSL].
+See also xref:endpoint.adoc[]
diff --git a/docs/user-manual/modules/faq/nav.adoc 
b/docs/user-manual/modules/faq/nav.adoc
index bfcb5ed22913..b6f881f08449 100644
--- a/docs/user-manual/modules/faq/nav.adoc
+++ b/docs/user-manual/modules/faq/nav.adoc
@@ -14,24 +14,7 @@
 ** xref:what-platforms-are-supported.adoc[What platforms are supported?]
 ** xref:why-the-name-camel.adoc[Why the name Camel?]
 ** 
xref:how-do-i-specify-which-method-to-use-when-using-beans-in-routes.adoc[How 
do I specify which method to use when using beans in routes?]
-** xref:how-can-i-create-a-custom-component-or-endpoint.adoc[How can I create 
a custom component or endpoint?]
 ** xref:how-does-camel-look-up-beans-and-endpoints.adoc[How does Camel look up 
beans and endpoints?]
-** xref:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
-** 
xref:how-do-i-configure-password-options-on-camel-endpoints-without-the-value-being-encoded.adoc[How
 do I configure password options on Camel endpoints without the value being 
encoded?]
-** 
xref:how-do-i-configure-the-default-maximum-cache-size-for-producercache-or-producertemplate.adoc[How
 do I configure the default maximum cache size for ProducerCache or 
ProducerTemplate?]
-** 
xref:how-do-i-configure-the-maximum-endpoint-cache-size-for-camelcontext.adoc[How
 do I configure the maximum endpoint cache size for CamelContext?]
-** xref:how-do-i-debug-my-route.adoc[How do I debug my route?]
-** xref:how-do-i-disable-jmx.adoc[How do I disable JMX?]
-** xref:how-do-i-enable-streams-when-debug-logging-messages-in-camel.adoc[How 
do I enable streams when debug logging messages in Camel?]
-** 
xref:how-do-i-handle-failures-when-consuming-for-example-from-a-ftp-server.adoc[How
 do I handle failures when consuming for example from a FTP server?]
-** xref:how-do-i-import-rests-from-other-xml-files.adoc[How do I import rests 
from other XML files?]
-** xref:how-do-i-import-routes-from-other-xml-files.adoc[How do I import 
routes from other XML files?]
-** xref:how-do-i-let-jetty-match-wildcards.adoc[How do I let Jetty match 
wildcards?]
-** xref:how-do-i-name-my-routes.adoc[How do I name my routes?]
-** xref:how-do-i-restart-camelcontext.adoc[How do I restart CamelContext?]
-** 
xref:how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.adoc[How
 do I retrieve the thrown Exception during processing an Exchange?]
-** xref:how-do-i-retry-failed-messages-forever.adoc[How do I retry failed 
messages forever?]
-** 
xref:how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.adoc[How
 do I retry processing a message from a certain point back or an entire route?]
 ** xref:how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.adoc[How 
do I reuse the ContextTestSupport class in my unit tests?]
 ** 
xref:how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.adoc[How 
do I set the max chars when debug logging messages in Camel?]
 ** xref:how-do-i-use-uris-with-parameters-in-xml.adoc[How do I use URIs with 
parameters in XML?]
@@ -54,9 +37,7 @@
 ** xref:why-is-my-processor-not-showing-up-in-jconsole.adoc[Why is my 
processor not showing up in JConsole?]
 ** xref:why-is-the-exception-null-when-i-use-onexception.adoc[Why is the 
exception null when I use onException?]
 ** xref:why-use-multiple-camelcontext.adoc[Why use multiple CamelContext?]
-** xref:how-do-i-enable-debug-logging.adoc[How do I enable debug logging?]
 ** xref:how-do-i-use-log4j.adoc[How do I use log4j?]
-** xref:how-do-i-make-my-jms-endpoint-transactional.adoc[How Do I Make My JMS 
Endpoint Transactional?]
 ** xref:how-do-i-set-the-mep-when-interacting-with-jbi.adoc[How do I set the 
MEP when interacting with JBI?]
 ** xref:how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc[How do the 
direct, event, seda and vm endpoints compare?]
 ** xref:how-do-the-timer-and-quartz-endpoints-compare.adoc[How do the Timer 
and Quartz endpoints compare?]
diff --git 
a/docs/user-manual/modules/faq/pages/how-can-i-create-a-custom-component-or-endpoint.adoc
 
b/docs/user-manual/modules/faq/pages/how-can-i-create-a-custom-component-or-endpoint.adoc
deleted file mode 100644
index 842db5c355d3..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-can-i-create-a-custom-component-or-endpoint.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-= How can I create a custom component or endpoint?
-
-Please read xref:ROOT:writing-components.adoc[Writing Components] for a
-background in how to implement a new component or endpoint.
-
diff --git 
a/docs/user-manual/modules/faq/pages/how-can-i-get-the-source-code.adoc 
b/docs/user-manual/modules/faq/pages/how-can-i-get-the-source-code.adoc
index 9a90b095b688..64ec91bebead 100644
--- a/docs/user-manual/modules/faq/pages/how-can-i-get-the-source-code.adoc
+++ b/docs/user-manual/modules/faq/pages/how-can-i-get-the-source-code.adoc
@@ -1,11 +1,10 @@
 = How can I get the source code?
 
-The source code is at https://github.com/apache/camel/ 
-so you can also checkout the source code from GitHub, if you are
-familiar with using GitHub. By using GitHub you can submit pull requests
-to the project using the standard GitHub way.
+The source code is on GitHub at: https://github.com/apache/camel
 
-https://github.com/apache/camel/
+From GitHub you can checkout the code, and contribute back
+by sending Pull Requests. Working with the code is similar to
+other projects hosted on GitHub.
 
 == Building the code
 
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-endpoints.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-configure-endpoints.adoc
deleted file mode 100644
index 79ec4d547a09..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-configure-endpoints.adoc
+++ /dev/null
@@ -1,305 +0,0 @@
-= How do I configure endpoints?
-
-There are a few different approaches to configuring components and
-endpoints.
-
-[[HowdoIconfigureendpoints-UsingJavaCode]]
-== Using Java Code
-
-You can explicitly configure a Component using Java
-code as shown in this example
-
-Or you can explicitly get hold of an Endpoint and
-configure it using Java code as shown in the 
xref:components::mock-component.adoc[Mock endpoint examples].
-
-[source,java]
-----
-SomeEndpoint endpoint = camelContext.getEndpoint("someURI", 
SomeEndpoint.class);
-endpoint.setSomething("aValue");
-----
-
-[[HowdoIconfigureendpoints-UsingSpringXML]]
-== Using Spring XML
-
-You can configure your Component or Endpoint instances in your Spring XML as 
`<bean>` as follows:
-
-[source,xml]
-----
-<bean id="activemq" 
class="org.apache.activemq.camel.component.ActiveMQComponent">
-  <property name="connectionFactory">
-    <bean class="org.apache.activemq.ActiveMQConnectionFactory">
-      <property name="brokerURL" 
value="vm://localhost?broker.persistent=false&amp;broker.useJmx=false"/>
-    </bean>
-  </property>
-</bean>
-----
-
-Which allows you to configure a component using some name (activemq in
-the above example), then you can refer to the component using
-`activemq:[queue:|topic:]destinationName`. This works by the
-`SpringCamelContext` lazily fetching components from the spring context
-for the scheme name you use for Endpoint
-URIs
-
-[[HowdoIconfigureendpoints-UsingEndpointURIs]]
-== Using Endpoint URIs
-
-Another approach is to use the URI syntax. The URI syntax supports the
-query notation. So for example with the 
xref:components::mail-component.adoc[Mail] component
-you can configure the password property via the URI
-
-[source,text]
-----
-pop3://host:port?password=foo
-----
-
-[[HowdoIconfigureendpoints-ReferringbeansfromEndpointURIs]]
-=== Referring beans from Endpoint URIs
-
-When configuring endpoints using the URI syntax you can refer to beans
-in the Registry using the `#bean:id` notation.
-
-NOTE: The older syntax with just `#id` has been deprecated due to ambiguity
-as Camel supports a number of additional functions that start with the # 
notation.
-
-If the URI parameter value starts with `#bean:` then Camel will lookup in
-the Registry for a bean of the given type by id. For instance:
-
-[source]
-----
-file://inbox?sorter=#bean:mySpecialFileSorter
-----
-
-Will lookup a bean with the id `mySpecialFileSorter` in the
-Registry.
-
-Camel also supports to refer to beans by their class type.
-
-[[HowdoIconfigureendpoints-ReferringbeansbyclassfromEndpointURIs]]
-=== Referring beans by class from Endpoint URIs
-
-When configuring endpoints using URI syntax you can now refer to bean by its 
class name
-using the `#class:fullyQualifiedName` notation.
-
-If the parameter value starts with a `#class:` sign then Camel will load the
-class with the given name, and create an instance of the bean using its 
_no-arg_ constructor:
-
-[source,text]
-----
-file://inbox?sorter=#class:com.foo.MySpecialSorter
-----
-
-If you need to provide parameters to the constructor, then this is also 
possible
-(limited to numbers, boolean, literal, and null values)
-
-[source,text]
-----
-file://inbox?sorter=#class:com.foo.MySpecialSorter(10, 'Hello world', true)
-----
-
-[[HowdoIconfigureendpoints-ReferringbeansbytypefromEndpointURIs]]
-=== Referring beans by type from Endpoint URIs
-
-When configuring endpoints using URI syntax you can now refer to bean by its 
type which
-are used to lookup the bean by the given type from the 
xref:ROOT:registry.adoc[Registry].
-If there is one bean found in the registry of the given type, then that bean 
instance will be used;
-otherwise an exception is thrown.
-
-[source]
-----
-file://inbox?idempontentRepository=#type:org.apache.camel.spi.IdempotentRepository
-----
-
-[[HowdoIconfigureendpoints-Configuringparametervaluesusingrawvalues,egsuchaspasswords]]
-=== Configuring parameter values using raw values, eg such as passwords
-
-*Since Camel 2.11*
-
-When configuring endpoint options using URI syntax, then the values is
-by default URI encoded. This can be a problem if you want to configure
-passwords and just use the value _as is_ without any encoding. For
-example you may have a plus sign in the password, which would be decimal
-encoded by default.
-
-So from Camel 2.11 onwards we made this easier as you can denote a
-parameter value to be *raw* using the following syntax `RAW(value)`, e.g.
-the value starts with `RAW(` and then ends with the parenthesis `)`.
-Here is a little example:
-
-[source,java]
-----
-.to("ftp:[email protected]?password=RAW(se+re?t&23)&binary=true")
-----
-
-In the above example, we have declare the password value as raw, and the
-actual password would be as typed, eg `se+re?t&23`.
-
-NOTE: you may find a corner case when you use both `)` and `&` character as 
part of your password (ie, `se+re)t&23`). The parser will interpret the `)` as 
closing the `RAW` function and having a parameter started by `&`. In such case, 
you can instead use the `RAW{}` notation to let you include the `)` character 
and have it decoded as part of the password (ie, `RAW{se+re)t&23}`). As a safe 
alternative you can also use `password=#property:myPass` and then have `myPass` 
a xref:ROOT:property [...]
-
-==== Using ENV variables with raw values
-
-*Since Camel 4.7*
-
-If you need to use environment variables, for example as username or passwords 
then this is now possible by inlining
-the xref:components:languages:simple-language.adoc[Simple] language
-using `+++$simple{xxx}+++` syntax in `RAW(...)` as shown below:
-
-[source,java]
-----
-.to("ftp:[email protected]?password=RAW($simple{env:MY_FTP_PASSWORD})&binary=true")
-----
-
-[[HowdoIconfigureendpoints-Usingpropertyplaceholders]]
-=== Using property placeholders
-
-Camel has extensive support for using property placeholders, which you
-can read more about here. For
-example in the ftp example above we can externalize the password to a
-`.properties` file.
-
-For example configuring the property placeholder when using a
-XML DSL, where we declare the location of the `.properties`
-file. Though we can also define this in Java code. See the
-documentation for more details.
-
-[source,xml]
-----
-<camelContext>
-   <propertyPlaceholder id="properties" location="myftp.properties"/>
-   ...
-</camelContext>
-----
-
-And the Camel route now refers to the placeholder using the `{\{key}}`
-notation:
-
-[source,java]
-----
-.to("ftp:[email protected]?password={{myFtpPassword}}&binary=true"
-----
-
-And have a `myftp.properties` file with password. Notice we still define
-the `RAW(value)` style to ensure the password is used _as is_:
-
-[source,text]
-----
-myFtpPassword=RAW(se+re?t&23)
-----
-
-We could still have used the `RAW(value)` in the Camel route instead:
-
-[source,java]
-----
-.to("ftp:[email protected]?password=RAW({{myFtpPassword}})&binary=true")
-----
-
-And then we would need to remove the `RAW` from the properties file:
-
-[source]
-----
-myFtpPassword=se+re?t&23
-----
-
-To understand more about property placeholders, read the
-documentation.
-
-In Camel 3.4 you can use an alternative than RAW to refer to a property 
placeholder by its
-key, as discussed in the following section.
-
-=== Referring to a property placeholder
-
-When using `{\{key}}` in configuring endpoint URIs then Camel will replace the 
`{\{key}}` while parsing the endpoint URI.
-This has its pros but also a few cons, such as when using sensitive 
information such as passwords. As we have seen
-in the previous section you can use RAW() syntax. Instead of using RAW() you 
can use `#property:key` notation,
-as shown in the example below:
-
-[source,java]
-----
-.to("ftp:[email protected]?password=#property:myFtpPassword&binary=true")
-----
-
-... and in XML:
-
-[source,xml]
-----
-<to 
uri="ftp:[email protected]?password=#property:myFtpPassword&amp;binary=true"/>
-----
-
-[[HowdoIconfigureendpoints-Configuringurisusingendpointwithbeanpropertystyle]]
-== Configuring URIs using endpoint with bean property style
-
-Sometimes configuring endpoint URIs may have many options, and therefore
-the URI can become long. In Java DSL you can break the URIs into new
-lines as its just Java code, e.g. just concat the `String`. When using XML
-DSL then the URI is an attribute, e.g. `<from uri="bla bla"/>`. From Camel
-2.15 onwards you can configure the endpoint separately, and from the
-routes refer to the endpoints using their shorthand ids. 
-
-[source,xml]
-----
-<camelContext>
- 
-  <endpoint id="foo" uri="ftp://foo@myserver";>
-    <property key="password" value="secret"/>
-    <property key="recursive" value="true"/>
-    <property key="ftpClient.dataTimeout" value="30000"/>
-    <property key="ftpClient.serverLanguageCode" value="fr"/> 
-  </endpoint>
- 
-  <route>
-    <from uri="ref:foo"/>
-    ...
-  </route>
-</camelContext>
-----
-
-In the example above, the endpoint with id `foo`, is defined using
-`<endpoint>` which under the covers assembles this as an URI, with all the
-options, as if you have defined all the options directly in the URI. You
-can still configure some options in the URI, and then use `<property>`
-style for additional options, or to override options from the URI, such
-as:
-
-[source]
-----
-<endpoint id="foo" uri="ftp://foo@myserver?recursive=true";>
-  <property key="password" value="secret"/>
-  <property key="ftpClient.dataTimeout" value="30000"/>
-  <property key="ftpClient.serverLanguageCode" value="fr"/>
-</endpoint>
-----
-
-[[HowdoIconfigureendpoints-Configuringlongurisusingnewlines]]
-== Configuring long URIs using new lines
-
-Sometimes configuring endpoint URIs may have many options, and therefore
-the URI can become long. In Java DSL you can break the URIs into new
-lines as its just Java code, e.g. just concat the `String`. When using XML
-DSL then the URI is an attribute, e.g. `<from uri="bla bla"/>`. From Camel
-2.15 onwards you can break the URI attribute using new line, such as
-shown below:
-
-[source,xml]
-----
-<route>
-  <from uri="ftp://foo@myserver?password=secret&amp;
-           recursive=true&amp;
-           ftpClient.dataTimeout=30000&amp;
-           ftpClientConfig.serverLanguageCode=fr"/>
-  <to uri="bean:doSomething"/>
-</route>
-----
-
-Notice that it still requires escaping `&` as `&amp;amp;` in XML. Also you
-can have multiple options in one line, eg this is the same:
-
-[source,xml]
-----
-<route>
-  <from uri="ftp://foo@myserver?password=secret&amp;
-           recursive=true&amp;ftpClient.dataTimeout=30000&amp;
-           ftpClientConfig.serverLanguageCode=fr"/>
-  <to uri="bean:doSomething"/>
-</route>
-----
-
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-password-options-on-camel-endpoints-without-the-value-being-encoded.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-configure-password-options-on-camel-endpoints-without-the-value-being-encoded.adoc
deleted file mode 100644
index 46e12acbedec..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-password-options-on-camel-endpoints-without-the-value-being-encoded.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= How do I configure password options on Camel endpoints without the value 
being encoded?
-
-When you configure Camel endpoints using xref:ROOT:uris.adoc[URIs] then the
-parameter values gets url encoded by default. +
-This can be a problem when you want to configure passwords _as is_.
-
-To do that you can tell Camel to use the raw value, by enclosing the
-value with RAW(value). See more details at
-xref:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
-which has an example also.
-
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-the-default-maximum-cache-size-for-producercache-or-producertemplate.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-configure-the-default-maximum-cache-size-for-producercache-or-producertemplate.adoc
deleted file mode 100644
index c15d4a8028af..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-the-default-maximum-cache-size-for-producercache-or-producertemplate.adoc
+++ /dev/null
@@ -1,31 +0,0 @@
-= How do I configure the default maximum cache size for ProducerCache or 
ProducerTemplate?
-
-*Since Camel 2.3*
-
-This applies to ConsumerCache and ConsumerTemplate as well.
-
-You can configure the default maximum cache size by setting the
-`Exchange.MAXIMUM_CACHE_POOL_SIZE` property on `CamelContext`.
-
-[source,java]
-----
-getCamelContext().getGlobalOptions().put(Exchange.MAXIMUM_CACHE_POOL_SIZE, 
"50");
-----
-
-And in Spring XML its done as:
-
-[source,java]
-----
-<camelContext>
-   <properties>
-      <property key="CamelMaximumCachePoolSize" value="50"/>
-   </properties>
-...
-</camelContext>
-----
-
-The default maximum cache size is 1000.
-
-At runtime you can see the `ProducerCache` in JMX as they are listed in
-the `services` category.
-
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-the-maximum-endpoint-cache-size-for-camelcontext.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-configure-the-maximum-endpoint-cache-size-for-camelcontext.adoc
deleted file mode 100644
index 41cc9fbb3ed9..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-configure-the-maximum-endpoint-cache-size-for-camelcontext.adoc
+++ /dev/null
@@ -1,37 +0,0 @@
-= How do I configure the maximum endpoint cache size for CamelContext?
-
-xref:ROOT:camelcontext.adoc[CamelContext] will by default cache the last 1000
-used endpoints (based on a LRUCache).
-
-[[HowdoIconfigurethemaximumendpointcachesizeforCamelContext-Configuringcachesize]]
-== Configuring cache size
-
-*Since Camel 2.8*
-
-You can configure the default maximum cache size by setting the
-`Exchange.MAXIMUM_ENDPOINT_CACHE_SIZE` property on
-xref:ROOT:camelcontext.adoc[CamelContext].
-
-[source,java]
-----
-getCamelContext().getGlobalOptions().put(Exchange.MAXIMUM_ENDPOINT_CACHE_SIZE, 
"500");
-----
-
-You need to configure this before xref:ROOT:camelcontext.adoc[CamelContext]
-is started.
-
-And in Spring XML its done as:
-
-[source,java]
-----
-<camelContext>
-   <properties>
-      <property key="CamelMaximumEndpointCacheSize" value="500"/>
-   </properties>
-...
-</camelContext>
-----
-
-At runtime you can see the `EndpointRegistry` in JMX as they are listed
-in the `services` category.
-
diff --git a/docs/user-manual/modules/faq/pages/how-do-i-debug-my-route.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-debug-my-route.adoc
deleted file mode 100644
index 5e97aa2209a2..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-debug-my-route.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-= How do I debug my route?
-
-If you've created a route and its not doing what you think it is you
-could try using one of these features from version 1.4 onwards:
-
-* xref:ROOT:tracer.adoc[Tracer] to trace in commons-logging / log4j each step
-that Camel takes
-* xref:ROOT:debugger.adoc[Debugger] to let you set breakpoints at points in
-the route and examine historic message exchanges
-* xref:ROOT:debugger.adoc[Debug] from your unit test if you use the Camel
-`camel-test` component
-
-Some link:/community/user-stories/[third party tools] offer Apache Camel route
-debugging.
diff --git a/docs/user-manual/modules/faq/pages/how-do-i-disable-jmx.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-disable-jmx.adoc
deleted file mode 100644
index f10eacb2eff3..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-disable-jmx.adoc
+++ /dev/null
@@ -1,38 +0,0 @@
-= How do I disable JMX?
-
-== How do I disable JMX since Camel 3.x
-
-JMX is disabled by default, and only enabled if `camel-management`
-is on the classpath. So an easy way to disable JMX is to _not_ include this 
JAR.
-
-You can also turn off JMX as shown below.
-
-== How do I disable JMX in Camel 2.x
-
-You can disable JMX instrumentation agent by setting Java VM system
-property as follow. The property value is treated as boolean.
-
-[source,java]
-----
--Dorg.apache.camel.jmx.disabled=true
-----
-
-Or, by adding a jmxAgent element inside the camelContext element in
-Spring configuration:
-
-[source,xml]
-----
-<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
-  <jmxAgent id="agent" disabled="true"/>
-    ...
-</camelContext>
-----
-
-Or in Camel 2.1 its a bit easier (not having to use JVM system property)
-if using pure Java as you can disable it as follows:
-
-[source,java]
-----
-CamelContext camel = new DefaultCamelContext();
-camel.disableJMX();
-----
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-enable-debug-logging.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-enable-debug-logging.adoc
deleted file mode 100644
index 400135747e79..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-enable-debug-logging.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-= How do I enable debug logging?
-
-Camel uses convention over configuration so sometimes it's useful to turn
-on debug logging to see how Camel is operating and to try and diagnose
-issues.
-
-Camel uses http://www.slf4j.org/[sfl4j] which allows you to configure
-logging via, among others:
-
-* http://logging.apache.org/log4j/[Log4j]
-* http://logback.qos.ch/[Logback]
-* 
https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html[JDK
 Util Logging logging]
-
-To enable debug logging we recommend you
-xref:how-do-i-use-log4j.adoc[use log4j for logging] then make sure your
-log4j.properties file enables DEBUG level logging for the
-`org.apache.camel` package.
-
-For example here is a `log4j.properties` file with debug Camel logging:
-enabled
-
-[source,java]
-----
-log4j.rootLogger=INFO, out
-
-log4j.logger.org.apache.camel=DEBUG
-
-log4j.appender.out=org.apache.log4j.ConsoleAppender
-log4j.appender.out.layout=org.apache.log4j.PatternLayout
-log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n
-#log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - 
%m%n
-----
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-enable-streams-when-debug-logging-messages-in-camel.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-enable-streams-when-debug-logging-messages-in-camel.adoc
deleted file mode 100644
index dea7748061e3..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-enable-streams-when-debug-logging-messages-in-camel.adoc
+++ /dev/null
@@ -1,54 +0,0 @@
-= How do I enable streams when debug logging messages in Camel
-
-*Since Camel 2.1*
-
-When you run Camel with `DEBUG` level as logging, it will log the
-messages and its content from time to time.
-As some messages can contain streams, which are prone to be not readable
-multiple times, and therefore Camel will by default *not* log these
-types.
-
-These instances are not logged by default:
-
-* `java.xml.transform.StreamSource`
-* `java.io.InputStream`
-* `java.io.OutputStream`
-* `java.io.Reader`
-* `java.io.Writer`
-
-You will see this in the log as:
-
-----
-DEBUG ProducerCache                  - >>>> Endpoint[direct:start] 
Exchange[Message: [Body is instance of java.xml.transform.StreamSource]]
-----
-
-Here we have a message which is XML stream based.
-You can customize whether Camel should log the payload anyway.
-
-[[HowdoIenablestreamswhendebugloggingmessagesinCamel-CustomizingfromJavaDSL]]
-== Customizing from Java DSL
-
-You add to the Camel properties the flag to log streams.
-
-[source,java]
-----
-        context.getGlobalOptions().put(Exchange.LOG_DEBUG_BODY_STREAMS, 
"true");
-----
-
-Notice default is `false`.
-
-[[HowdoIenablestreamswhendebugloggingmessagesinCamel-CustomizingfromSpringDSL]]
-== Customizing from Spring DSL
-
-You add to the Camel properties the flag to log streams.
-
-[source,java]
-----
-   <camelContext>
-       <properties>
-           <property key="CamelLogDebugBodyStreams" value="true"/>
-      </properties>
-   </camelContext>
-----
-
-Notice default is `false`.
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-handle-failures-when-consuming-for-example-from-a-ftp-server.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-handle-failures-when-consuming-for-example-from-a-ftp-server.adoc
deleted file mode 100644
index c617d8d723f7..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-handle-failures-when-consuming-for-example-from-a-ftp-server.adoc
+++ /dev/null
@@ -1,25 +0,0 @@
-= How do I handle failures when consuming for example from a FTP server?
-
-When you do a route such as:
-
-[source,java]
-----
-from("ftp://[email protected]?password=secret";).to("bean:logic?method=doSomething");
-----
-
-And there is a failure with connecting to the remote FTP server. The
-existing xref:ROOT:error-handler.adoc[error handler] is
-based on when a message is *being* routed.
-In this case the error occurs *before* a message has been initiated and
-routed. So how can I control the error handling?
-
-The xref:components::ftp-component.adoc[FTP] component have a few options
-(`maximumReconnectAttempts, reconnectDelay` to control number of retries
-and delay in between.
-
-But you can also plugin your own implementation and determine what to do
-using the `pollStrategy` option which has more documentation
-xref:components:eips:polling-consumer.adoc[Polling Consumer].
-Notice that the option `pollStrategy` applies for all consumers which is
-a `ScheduledPollConsumer` consumer. The page lists those.
-
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-import-rests-from-other-xml-files.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-import-rests-from-other-xml-files.adoc
deleted file mode 100644
index 5c7ebe719f33..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-import-rests-from-other-xml-files.adoc
+++ /dev/null
@@ -1,85 +0,0 @@
-= How do I import rests from other XML files?
-
-*Since Camel 2.14*
-
-When defining rests in Camel using Spring XML you may want to define some 
rests in other XML files. For
-example you may have many rest services and it may help to maintain the
-application if some of the rests are in separate XML files. You may also
-want to store common and reusable rests in other XML files, which you
-can simply import when needed.
-
-This is possible to define rests outside `<camelContext/>` which you do
-in a new `<restContext/>` tag.
-
-[NOTE]
-====
-When you use `<restContext>` then they are separated, and cannot
-reuse existing `<onException>`, `<intercept>`, `<dataFormats>` and similar
-cross cutting functionality defined in the `<camelContext>`. In other
-words the `<restContext>` is currently isolated. This may change in Camel
-3.x.
-====
-
-For example we could have a file named `myCoolRests.xml` which contains
-a rest (can have more) as shown:
-
-[source,xml]
-----
-  <restContext id="myCoolRest" xmlns="http://camel.apache.org/schema/spring";>
-    <rest path="/say/hello">
-      <get>
-        <to uri="direct:hello"/>
-      </get>
-    </rest>
-  </restContext>
-----
-
-Then in your XML file which contains the CamelContext you can use Spring
-to import the `myCoolRests.xml` file.
-And then inside `<camelContext/>` you can refer to the
-`<restContext/>` using the `<restContextRef>` by its id as shown below:
-
-[source,xml]
-----
-  <camelContext xmlns="http://camel.apache.org/schema/spring";>
-
-    <restContextRef ref="myCoolRest"/>
-
-    <rest path="/say/bye">
-      <get consumes="application/json">
-        <to uri="direct:bye"/>
-      </get>
-      <post>
-        <to uri="mock:update"/>
-      </post>
-    </rest>
-
-    <route>
-      <from uri="direct:hello"/>
-      <transform>
-        <constant>Hello World</constant>
-      </transform>
-    </route>
-    <route>
-      <from uri="direct:bye"/>
-      <transform>
-        <constant>Bye World</constant>
-      </transform>
-    </route>
-  </camelContext>
-----
-
-Also notice that you can mix and match, having rests inside CamelContext
-and also externalized in RestContext.
-
-You can have as many `<restContextRef/>` as you like.
-
-[TIP]
-====
-**Reusable rests**
-
-The rests defined in `<restContext/>` can be reused by multiple
-`<camelContext/>`. However its only the definition which is reused. At
-runtime each CamelContext will create its own instance of the rest based
-on the definition.
-====
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-import-routes-from-other-xml-files.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-import-routes-from-other-xml-files.adoc
deleted file mode 100644
index b17b627a46f5..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-import-routes-from-other-xml-files.adoc
+++ /dev/null
@@ -1,44 +0,0 @@
-= How Do I Import Routes From Other XML Files?
-
-*Since Camel 2.3*
-
-When defining routes in Camel using Spring XML
-you may want to define some routes in other XML files.
-For example, you may have many routes, and it may help to maintain the
-application if some routes are in separate XML files. You may
-also want to store common and reusable routes in other XML files, which
-you can simply import when needed.
-
-In *Camel 2.3* it is now possible to define routes outside
-`<camelContext/>` which you do in a new `<routeContext/>` tag.
-
-[NOTE]
-====
-When you use `<routeContext>` then they are separated, and
-cannot reuse existing `<onException>`,
-`<intercept>`, `<dataFormats>` and similar cross-cutting
-functionality defined in the `<camelContext>`. In other words
-the `<routeContext>` is currently isolated. This may change in Camel
-3.x.
-====
-
-For example, we could have a file named `myCoolRoutes.xml` which
-contains a couple of routes as shown in 
https://github.com/apache/camel/tree/main/components/camel-spring-parent/camel-spring-xml/src/test/resources/org/apache/camel/spring/config/myCoolRoutes.xml[this
 example].
-
-
-Then in your XML file which contains the CamelContext you can use Spring to
-import the `myCoolRoute.xml` file. And then inside `<camelContext/>`
-you can refer to the `<routeContext/>` by its `id` as shown below in 
https://github.com/apache/camel/tree/main/components/camel-spring-parent/camel-spring-xml/src/test/resources/org/apache/camel/spring/config/RouteRefIncludeXmlFileTest.xml[this
 example].
-
-
-Also notice that you can mix and match, having routes inside `CamelContext`
-and also externalized in `RouteContext`.
-
-You can have as many `<routeContextRef/>` as you like.
-
-== Reusable routes
-
-The routes defined in `<routeContext/>` can be reused by multiple
-`<camelContext/>`. However, it is only the definition which is reused. At
-runtime each `CamelContext` will create its own instance of the route
-based on the definition.
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-let-jetty-match-wildcards.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-let-jetty-match-wildcards.adoc
deleted file mode 100644
index eee80eca6ce6..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-let-jetty-match-wildcards.adoc
+++ /dev/null
@@ -1,30 +0,0 @@
-= How do I let Jetty match wildcards?
-
-By default xref:components::jetty-component.adoc[Jetty] will only match on 
exact uri's. But
-you can instruct Jetty to match prefixes. For example:
-
-[source,java]
-----
-from("jetty://0.0.0.0:8123/foo").to("mock:foo");
-----
-
-In the route above xref:components::jetty-component.adoc[Jetty] will only 
match if the uri is
-an exact match, so it will match if you enter
-`\http://0.0.0.0:8123/foo` but not match if you do
-`\http://0.0.0.0:8123/foo/bar`.
-
-So if you want to enable wildcard matching you do as follows:
-
-[source,java]
-----
-from("jetty://0.0.0.0:8123/foo?matchOnUriPrefix=true").to("mock:foo");
-----
-
-So now Jetty matches any endpoints with starts with `foo`.
-
-To match *any* endpoint you can do:
-
-[source,java]
-----
-from("jetty://0.0.0.0:8123?matchOnUriPrefix=true").to("mock:foo");
-----
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-make-my-jms-endpoint-transactional.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-make-my-jms-endpoint-transactional.adoc
deleted file mode 100644
index 5d05cb44aa92..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-make-my-jms-endpoint-transactional.adoc
+++ /dev/null
@@ -1,25 +0,0 @@
-= How Do I Make My JMS Endpoint Transactional?
-
-I have a JMS route like this:
-
-[source,java]
-----
-from("activemq:Some.Queue")
-  .bean(MyProcessor.class);
-----
-
-[[HowDoIMakeMyJMSEndpointTransactional-Question]]
-== Question:
-
-How Do I Make It Transactional?
-
-[[HowDoIMakeMyJMSEndpointTransactional-Answer]]
-== Answer:
-
-There are examples in the 
xref:components:eips:transactional-client.adoc[Transactional Client]
-and it is described in the _Enabling Transacted Consumption_
-section of xref:components::jms-component.adoc[JMS]. To make a session 
transactional
-set `transacted=true` flag on the JMS endpoint and configure
-a `transactionManager` on the xref:ROOT:component.adoc[Component] or
-xref:ROOT:endpoint.adoc[Endpoint].
-
diff --git a/docs/user-manual/modules/faq/pages/how-do-i-name-my-routes.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-name-my-routes.adoc
deleted file mode 100644
index 855d18aa0792..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-name-my-routes.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-= How do I name my routes?
-
-You can assign names to your routes in Java DSL using `routeId`:
-
-[source,java]
-----
-from("direct:start").routeId("myRoute")
-    .to(mock:bar);
-----
-
-And in Spring XML using the `id` attribute:
-
-[source,xml]
-----
-<route id="myRoute">
-    <from uri="direct:start"/>
-    <to uri="mock:bar"/>
-</route>
-----
-
-Same example for YAML using the `id` attribute:
-
-[source,yaml]
-----
-- route:
-    id: myRoute
-    from:
-        uri: direct:start
-        steps:        
-        - to:
-            uri: mock:bar
-----
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-restart-camelcontext.adoc 
b/docs/user-manual/modules/faq/pages/how-do-i-restart-camelcontext.adoc
deleted file mode 100644
index bb425bcbab65..000000000000
--- a/docs/user-manual/modules/faq/pages/how-do-i-restart-camelcontext.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= How do I restart CamelContext?
-
-A xref:ROOT:camelcontext.adoc[CamelContext] provides operations to control
-its lifecycle, see more at xref:ROOT:camelcontext.adoc[CamelContext].
-
-[NOTE]
-====
-Obviously you can also restart a Camel application if it has been
-deployed in a server. For example a WAR application can be restarted
-using the usual means for managing web applications.
-====
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.adoc
deleted file mode 100644
index a24c3b0699c1..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.adoc
+++ /dev/null
@@ -1,53 +0,0 @@
-= How do I retrieve the thrown Exception during processing an Exchange?
-
-You have send an Exchange to Camel but it fails during processing caused
-by a thrown Exception. How do I retrieve this Exception?
-
-If you are using CamelTemplate (or CamelProducer), then it is common to
-use the sendBody/requestBody methods that returns the exchange body
-response *only*. So if there was a thrown exception during processing
-Camel is not rethrowing this Exception. To remedy this you can use the
-plain send/request methods that accepts an Exchange object and returns
-an Exchange object.
-
-From the returned Exchange you can test if it has failed and get the caused
-exception. This is illustrated in the code sample:
-
-[source,java]
-----
-@Test
-public void testOk() {
-    int result = (Integer) template.sendBody("direct:input", 
ExchangePattern.InOut, "Hello London");
-    assertEquals(1, result);
-}
-
-@Test
-public void testFailure() {
-    // must create an exchange to get the result as an exchange where we can 
get the caused exception
-    Exchange exchange = 
getMandatoryEndpoint("direct:input").createExchange(ExchangePattern.InOut);
-    exchange.getIn().setBody("Hello Paris");
-
-    Exchange out = template.send("direct:input", exchange);
-    assertTrue("Should be failed", out.isFailed());
-    assertTrue("Should be IllegalArgumentException", out.getException() 
instanceof IllegalArgumentException);
-    assertEquals("Forced exception", out.getException().getMessage());
-}
-
-protected RouteBuilder createRouteBuilder() throws Exception {
-    return new RouteBuilder() {
-        public void configure() throws Exception {
-            from("direct:input").bean(new ExceptionBean());
-        }
-    };
-}
-
-public static class ExceptionBean {
-    public int doSomething(String request) throws Exception {
-        if (request.equals("Hello London")) {
-            return 1;
-        } else {
-            throw new IllegalArgumentException("Forced exception");
-        }
-    }
-}
-----
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-retry-failed-messages-forever.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-retry-failed-messages-forever.adoc
deleted file mode 100644
index 8f90a362da14..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-retry-failed-messages-forever.adoc
+++ /dev/null
@@ -1,18 +0,0 @@
-= How do I retry failed messages forever?
-
-If you want to keep the bad message in the original queue, then you are
-also blocking the messages that has arrived on the queue after the bad
-message.
-
-By default Camel will retry consuming a message up til 6 times before
-its moved to the default dead letter queue.
-
-If you configure the xref:components:eips:dead-letter-channel.adoc[Dead Letter 
Channel]
-to use `maximumRedeliveries = -1` then Camel will retry forever.
-
-When you consume a message you can check the in message header
-`org.apache.camel.redeliveryCount` that contains the number of times it
-has been redlivered.
-
-Or `org.apache.camel.Redelivered` that contains a boolean if its
-redelivered or if it is the first time the message is processed.
diff --git 
a/docs/user-manual/modules/faq/pages/how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.adoc
 
b/docs/user-manual/modules/faq/pages/how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.adoc
deleted file mode 100644
index d0fe086f4d44..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.adoc
+++ /dev/null
@@ -1,91 +0,0 @@
-= How do I retry processing a message from a certain point back or an entire 
route
-
-By default Apache Camel will perform any redelivery (retry) attempts
-from the point of failure. So if you want to retry from a point before
-this, you would need to split up your route.
-
-In the example below we have 2 routes (`direct:start`, `direct:sub`). In
-case of a failure anywhere in the `direct:sub` route, then the entire
-route is retried. This happens because we have instructed the `direct:sub`
-route to not use any error handler (eg the no error handler). Then we
-link the routes using the xref:components::direct-component.adoc[Direct] 
component by calling
-the sub route from the 1st route.
-
-[source,java]
-----
-// in case of io exception then try to redeliver up till 2 times
-// (do not use any delay due faster unit testing)
-onException(IOException.class)
-    .maximumRedeliveries(2).redeliveryDelay(0);
-
-from("direct:start")
-    .to("mock:a")
-    // call sub route (using direct)
-    .to("direct:sub")
-    .to("mock:c");
-
-from("direct:sub")
-    // disable error handler, so the entire route can be retried in case of 
redelivery
-    .errorHandler(noErrorHandler())
-    .to("mock:b")
-    .process(new MyProcessor());
-----
-
-The code above is based on an unit test, and as you can see the
-processor below is configured to fail the first 2 attempts.
-So that means the entire `direct:sub` route is redelivered, meaning that
-the `mock:b` endpoint receives the incoming message again.
-
-[source,java]
-----
-public static class MyProcessor implements Processor {
-
-    private int counter;
-
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        // use a processor to simulate error in the first 2 calls
-        if (counter++ < 2) {
-            throw new IOException("Forced");
-        }
-        exchange.getIn().setBody("Bye World");
-    }
-}
-----
-
-The same example is shown below using the XML DSL:
-
-[source,xml]
-----
-<!-- this is the processor that will fail the first 2 attempts -->
-<bean id="myProcessor" 
class="org.apache.camel.processor.RedeliverToSubRouteTest.MyProcessor"/>
-
-<camelContext xmlns="http://camel.apache.org/schema/spring";>
-
-    <!-- setup no error handler with an id, we refer to from the 2nd route -->
-    <errorHandler id="noErrorHandler" type="NoErrorHandler"/>
-
-    <!-- configure on exception to redelivery at most 2 times when an 
IOException was thrown
-         do not use redelivery delay to run unit test faster -->
-    <onException>
-        <exception>java.io.IOException</exception>
-        <redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="0"/>
-    </onException>
-
-    <!-- 1st route, no need to setup error handler, as it will use the default 
error handler -->
-    <route>
-        <from uri="direct:start"/>
-        <to uri="mock:a"/>
-        <to uri="direct:sub"/>
-        <to uri="mock:c"/>
-    </route>
-
-    <!-- disable error handler on this route, so the entire route can be 
redelivered
-         when called from the 1st route -->
-    <route errorHandlerRef="noErrorHandler">
-        <from uri="direct:sub"/>
-        <to uri="mock:b"/>
-        <process ref="myProcessor"/>
-    </route>
-</camelContext>
-----
diff --git a/docs/user-manual/modules/faq/pages/index.adoc 
b/docs/user-manual/modules/faq/pages/index.adoc
index 60ee1559dcdc..a5e33f49feb7 100644
--- a/docs/user-manual/modules/faq/pages/index.adoc
+++ b/docs/user-manual/modules/faq/pages/index.adoc
@@ -35,24 +35,7 @@ General questions about Camel
 Questions on using Apache Camel
 
 * 
xref:how-do-i-specify-which-method-to-use-when-using-beans-in-routes.adoc[How 
do I specify which method to use when using beans in routes?]
-* xref:how-can-i-create-a-custom-component-or-endpoint.adoc[How can I create a 
custom component or endpoint?]
 * xref:how-does-camel-look-up-beans-and-endpoints.adoc[How does Camel look up 
beans and endpoints?]
-* xref:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
-* 
xref:how-do-i-configure-password-options-on-camel-endpoints-without-the-value-being-encoded.adoc[How
 do I configure password options on Camel endpoints without the value being 
encoded?]
-* 
xref:how-do-i-configure-the-default-maximum-cache-size-for-producercache-or-producertemplate.adoc[How
 do I configure the default maximum cache size for ProducerCache or 
ProducerTemplate?]
-* 
xref:how-do-i-configure-the-maximum-endpoint-cache-size-for-camelcontext.adoc[How
 do I configure the maximum endpoint cache size for CamelContext?]
-* xref:how-do-i-debug-my-route.adoc[How do I debug my route?]
-* xref:how-do-i-disable-jmx.adoc[How do I disable JMX?]
-* xref:how-do-i-enable-streams-when-debug-logging-messages-in-camel.adoc[How 
do I enable streams when debug logging messages in Camel?]
-* 
xref:how-do-i-handle-failures-when-consuming-for-example-from-a-ftp-server.adoc[How
 do I handle failures when consuming for example from a FTP server?]
-* xref:how-do-i-import-rests-from-other-xml-files.adoc[How do I import rests 
from other XML files?]
-* xref:how-do-i-import-routes-from-other-xml-files.adoc[How do I import routes 
from other XML files?]
-* xref:how-do-i-let-jetty-match-wildcards.adoc[How do I let Jetty match 
wildcards?]
-* xref:how-do-i-name-my-routes.adoc[How do I name my routes?]
-* xref:how-do-i-restart-camelcontext.adoc[How do I restart CamelContext?]
-* 
xref:how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.adoc[How
 do I retrieve the thrown Exception during processing an Exchange?]
-* xref:how-do-i-retry-failed-messages-forever.adoc[How do I retry failed 
messages forever?]
-* 
xref:how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.adoc[How
 do I retry processing a message from a certain point back or an entire route?]
 * xref:how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.adoc[How 
do I reuse the ContextTestSupport class in my unit tests?]
 * 
xref:how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.adoc[How 
do I set the max chars when debug logging messages in Camel?]
 * xref:how-do-i-use-uris-with-parameters-in-xml.adoc[How do I use URIs with 
parameters in XML?]
@@ -83,7 +66,6 @@ Questions on using Apache Camel
 Questions on logging output from Camel to a console, using the
 xref:components::log-component.adoc[Log] endpoint or JDK 1.4 logging or Log4j 
etc
 
-* xref:how-do-i-enable-debug-logging.adoc[How do I enable debug logging?]
 * xref:how-do-i-use-log4j.adoc[How do I use log4j?]
 
 [[FAQ-CamelEndpointQuestions]]
@@ -92,7 +74,6 @@ xref:components::log-component.adoc[Log] endpoint or JDK 1.4 
logging or Log4j et
 Questions on using the various Camel xref:components::index.adoc[Components]
 and xref:ROOT:endpoint.adoc[Endpoint] implementations
 
-* xref:how-do-i-make-my-jms-endpoint-transactional.adoc[How Do I Make My JMS 
Endpoint Transactional?]
 * xref:how-do-i-set-the-mep-when-interacting-with-jbi.adoc[How do I set the 
MEP when interacting with JBI?]
 * xref:how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc[How do the 
direct, event, seda and vm endpoints compare?]
 * xref:how-do-the-timer-and-quartz-endpoints-compare.adoc[How do the Timer and 
Quartz endpoints compare?]
diff --git 
a/docs/user-manual/modules/faq/pages/why-cant-i-use-sign-in-my-password.adoc 
b/docs/user-manual/modules/faq/pages/why-cant-i-use-sign-in-my-password.adoc
index 039b937ffa2b..77194f3bfd86 100644
--- a/docs/user-manual/modules/faq/pages/why-cant-i-use-sign-in-my-password.adoc
+++ b/docs/user-manual/modules/faq/pages/why-cant-i-use-sign-in-my-password.adoc
@@ -6,8 +6,4 @@ When you configure Camel endpoints using 
xref:ROOT:uris.adoc[URIs] then the
 parameter values gets url encoded by default.
 This can be a problem when you want to configure passwords _as is_.
 
-To do that you can tell Camel to use the raw value, by enclosing the
-value with RAW(value). See more details at
-xref:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
-which has an example also.
 
diff --git 
a/docs/user-manual/modules/faq/pages/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
 
b/docs/user-manual/modules/faq/pages/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
index 454dfc5b924d..c7f59334521c 100644
--- 
a/docs/user-manual/modules/faq/pages/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
+++ 
b/docs/user-manual/modules/faq/pages/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
@@ -5,8 +5,6 @@ not picking up files. For example it may not run at all, or it 
cannot
 acquire a read lock on the file.
 xref:index.adoc#FAQ-LoggingQuestions[Check the logs] for any exceptions or 
other
 informative messages. You can
-xref:how-do-i-enable-debug-logging.adoc[turn on DEBUG logging] at
-`org.apache.camel.component.file` to see more detail.
 
 
[[WhydoesmyfileconsumernotpickupthefileandhowdoIletthefileconsumerusetheCamelerrorhandler-HowtouseCamelsroutingerrorhandlerswiththefileconsumer]]
 == How to use Camel's routing error handlers with the file consumer

Reply via email to