You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zr...@apache.org on 2018/10/25 07:17:12 UTC

[camel] branch master updated: CAMEL-11497: Migrate FAQ - remaining questions

This is an automated email from the ASF dual-hosted git repository.

zregvart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new b1df34a  CAMEL-11497: Migrate FAQ - remaining questions
b1df34a is described below

commit b1df34a45af6d1955c7d12b22cf36609b99e143d
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Thu Oct 25 14:33:55 2018 +0900

    CAMEL-11497: Migrate FAQ - remaining questions
---
 docs/user-manual/en/backlog-tracer.adoc            |  2 +-
 docs/user-manual/en/faq.adoc                       | 44 +++++++------------
 .../exception-beandefinitionstoreexception.adoc    | 50 ++++++++++++++++++++++
 ...ption-javaxnamingnoinitialcontextexception.adoc | 36 ++++++++++++++++
 ...tion-orgapachecamelnosuchendpointexception.adoc | 25 +++++++++++
 .../faq/exception-orgxmlsaxsaxparseexception.adoc  | 26 +++++++++++
 .../en/faq/how-do-i-enable-debug-logging.adoc      | 33 ++++++++++++++
 .../faq/how-do-i-invoke-camel-routes-from-jbi.adoc | 34 +++++++++++++++
 ...ow-do-i-make-my-jms-endpoint-transactional.adoc | 31 ++++++++++++++
 ...do-i-set-the-mep-when-interacting-with-jbi.adoc | 34 +++++++++++++++
 .../en/faq/how-do-i-use-java-14-logging.adoc       | 20 +++++++++
 docs/user-manual/en/faq/how-do-i-use-log4j.adoc    | 47 ++++++++++++++++++++
 ...direct-event-seda-and-vm-endpoints-compare.adoc | 14 ++++++
 ...-do-the-timer-and-quartz-endpoints-compare.adoc |  8 ++++
 ...when-adding-and-removing-routes-at-runtime.adoc | 10 +++++
 ...o-many-noclassdeffoundexception-on-startup.adoc | 17 ++++++++
 ...use-too-many-threads-with-producertemplate.adoc | 29 +++++++++++++
 .../why-does-maven-not-download-dependencies.adoc  | 10 +++++
 ...jms-route-only-consume-one-message-at-once.adoc | 21 +++++++++
 docs/user-manual/en/graceful-shutdown.adoc         |  4 +-
 20 files changed, 463 insertions(+), 32 deletions(-)

diff --git a/docs/user-manual/en/backlog-tracer.adoc b/docs/user-manual/en/backlog-tracer.adoc
index 1ea0111..625af23 100644
--- a/docs/user-manual/en/backlog-tracer.adoc
+++ b/docs/user-manual/en/backlog-tracer.adoc
@@ -111,5 +111,5 @@ See Also
 * link:tracer-example.html[Tracer Example]
 * link:debugger.adoc[Debugger]
 * link:delay-interceptor.adoc[Delay Interceptor]
-* link:log.html[Log]
+* <<log-component,Log>>
 
diff --git a/docs/user-manual/en/faq.adoc b/docs/user-manual/en/faq.adoc
index e73138a..79483f9 100644
--- a/docs/user-manual/en/faq.adoc
+++ b/docs/user-manual/en/faq.adoc
@@ -124,7 +124,7 @@ Questions on using Apache Camel
 ==== Logging Questions
 
 Questions on logging output from Camel to a console, using the
-link:log.adoc[Log] endpoint or JDK 1.4 logging or Log4j etc
+<<log-component,Log>> endpoint or JDK 1.4 logging or Log4j etc
 
 * link:faq/how-do-i-enable-debug-logging.adoc[How do I enable debug logging?]
 * link:faq/how-do-i-use-java-14-logging.adoc[How do I use Java 1.4 logging?]
@@ -136,16 +136,11 @@ link:log.adoc[Log] endpoint or JDK 1.4 logging or Log4j etc
 Questions on using the various Camel link:components.adoc[Components]
 and link:endpoint.adoc[Endpoint] implementations
 
-* link:faq/how-do-i-invoke-camel-routes-from-jbi.adoc[How do I invoke Camel
-routes from JBI?]
-* link:faq/how-do-i-make-my-jms-endpoint-transactional.adoc[How Do I Make My
-JMS Endpoint Transactional?]
-* link:faq/how-do-i-set-the-mep-when-interacting-with-jbi.adoc[How do I set
-the MEP when interacting with JBI?]
-* link:faq/how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc[How do
-the direct, event, seda and vm endpoints compare?]
-* link:faq/how-do-the-timer-and-quartz-endpoints-compare.adoc[How do the
-Timer and Quartz endpoints compare?]
+* link:faq/how-do-i-invoke-camel-routes-from-jbi.adoc[How do I invoke Camel routes from JBI?]
+* link:faq/how-do-i-make-my-jms-endpoint-transactional.adoc[How Do I Make My JMS Endpoint Transactional?]
+* link:faq/how-do-i-set-the-mep-when-interacting-with-jbi.adoc[How do I set the MEP when interacting with JBI?]
+* link:faq/how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc[How do the direct, event, seda and vm endpoints compare?]
+* link:faq/how-do-the-timer-and-quartz-endpoints-compare.adoc[How do the Timer and Quartz endpoints compare?]
 
 [[FAQ-ComponentQuestions]]
 ==== Component Questions
@@ -157,30 +152,21 @@ Questions on using specific components
 
 Questions on using the <<jms-component,JMS>> endpoints in Camel
 
-* link:faq/why-does-my-jms-route-only-consume-one-message-at-once.adoc[Why
-does my JMS route only consume one message at once?]
+* link:faq/why-does-my-jms-route-only-consume-one-message-at-once.adoc[Why does my JMS route only consume one message at once?]
 
 [[FAQ-CommonProblems]]
 ==== Common Problems
 
 Common Problems that people have when riding the Camel
 
-* link:faq/exception-beandefinitionstoreexception.adoc[Exception -
-BeanDefinitionStoreException]
-* link:faq/exception-javaxnamingnoinitialcontextexception.adoc[Exception -
-javax.naming.NoInitialContextException]
-* link:faq/exception-orgapachecamelnosuchendpointexception.adoc[Exception -
-org.apache.camel.NoSuchEndpointException]
-* link:faq/exception-orgxmlsaxsaxparseexception.adoc[Exception -
-org.xml.sax.SAXParseException]
-* link:faq/memory-leak-when-adding-and-removing-routes-at-runtime.adoc[Memory
-leak when adding and removing routes at runtime]
-* link:faq/why-do-camel-throw-so-many-noclassdeffoundexception-on-startup.adoc[Why
-do Camel throw so many NoClassDefFoundException on startup?]
-* link:faq/why-does-camel-use-too-many-threads-with-producertemplate.adoc[Why
-does Camel use too many threads with ProducerTemplate?]
-* link:faq/why-does-maven-not-download-dependencies.adoc[Why does maven not
-download dependencies?]
+* link:faq/exception-beandefinitionstoreexception.adoc[Exception - BeanDefinitionStoreException]
+* link:faq/exception-javaxnamingnoinitialcontextexception.adoc[Exception - javax.naming.NoInitialContextException]
+* link:faq/exception-orgapachecamelnosuchendpointexception.adoc[Exception - org.apache.camel.NoSuchEndpointException]
+* link:faq/exception-orgxmlsaxsaxparseexception.adoc[Exception - org.xml.sax.SAXParseException]
+* link:faq/memory-leak-when-adding-and-removing-routes-at-runtime.adoc[Memory leak when adding and removing routes at runtime]
+* link:faq/why-do-camel-throw-so-many-noclassdeffoundexception-on-startup.adoc[Why do Camel throw so many NoClassDefFoundException on startup?]
+* link:faq/why-does-camel-use-too-many-threads-with-producertemplate.adoc[Why does Camel use too many threads with ProducerTemplate?]
+* link:faq/why-does-maven-not-download-dependencies.adoc[Why does maven not download dependencies?]
 
 [[FAQ-Acknowledgement]]
 ==== Acknowledgement
diff --git a/docs/user-manual/en/faq/exception-beandefinitionstoreexception.adoc b/docs/user-manual/en/faq/exception-beandefinitionstoreexception.adoc
new file mode 100644
index 0000000..2dfabe1
--- /dev/null
+++ b/docs/user-manual/en/faq/exception-beandefinitionstoreexception.adoc
@@ -0,0 +1,50 @@
+[[Exception-BeanDefinitionStoreException-BeanDefinitionStoreException]]
+=== BeanDefinitionStoreException
+
+If you use ActiveMQ 5.x that ships with Camel 1.x and you upgrade it to
+use Camel 2.0 you can get an exception while starting.
+
+----
+ERROR: java.lang.RuntimeException: Failed to execute start task. Reason:
+org.springframework.beans.factory.BeanDefinitionStoreException: Unrecognized
+xbean namespace mapping: http://activemq.apache.org/camel/schema/spring
+----
+
+The reason is basically that the XML namespace changed in Camel 2.0 as
+explained below.
+
+When Camel went from an ActiveMQ sub project to a top level apache
+project, they changed the URIs for their xml schemas to reflect this in
+Camel 2.0.
+
+To fix this, in `activemq.xml` change all occurrences of:
+
+[source,xml]
+----
+http://activemq.apache.org/camel/schema/spring
+----
+
+to
+
+[source,xml]
+----
+http://camel.apache.org/schema/spring
+----
+
+and
+
+[source,xml]
+----
+http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
+----
+
+to
+
+[source,xml]
+----
+http://camel.apache.org/schema/spring/camel-spring.xsd
+----
+
+These will probably occur in the xsi:schemaLocation attribute of the top
+level beans tag (both) and in the xmlns attribute in the `camelContext`
+element (just the first).
diff --git a/docs/user-manual/en/faq/exception-javaxnamingnoinitialcontextexception.adoc b/docs/user-manual/en/faq/exception-javaxnamingnoinitialcontextexception.adoc
new file mode 100644
index 0000000..5d2bafa
--- /dev/null
+++ b/docs/user-manual/en/faq/exception-javaxnamingnoinitialcontextexception.adoc
@@ -0,0 +1,36 @@
+[[Exception-javax.naming.NoInitialContextException-Exceptionjavax.naming.NoInitialContextException]]
+=== Exception: `javax.naming.NoInitialContextException`
+
+If you try to use Camel without link:../spring.adoc[Spring] using code
+something like this:
+
+[source,java]
+----
+CamelContext context = new DefaultCamelContext();
+context.addRoutes(new MyRouteBuilder());
+
+context.start();
+----
+
+You might get an exception like this:
+
+----
+     [java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
+     [java]     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
+     [java]     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
+     [java]     at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
+     [java]     at javax.naming.InitialContext.lookup(InitialContext.java:351)
+     [java]     at org.apache.camel.impl.JndiRegistry.lookup(JndiRegistry.java:51)
+----
+
+This is because if you are not using Spring then the default
+link:../registry.adoc[Registry] implementation uses link:../jndi.adoc[JNDI].
+
+A simple workaround for this is to specify a JNDI provider. An easy fix
+is to create a file called `jndi.properties` on the classpath and give
+it this content...
+
+[source,java]
+----
+java.naming.factory.initial = org.apache.camel.util.jndi.CamelInitialContextFactory
+----
diff --git a/docs/user-manual/en/faq/exception-orgapachecamelnosuchendpointexception.adoc b/docs/user-manual/en/faq/exception-orgapachecamelnosuchendpointexception.adoc
new file mode 100644
index 0000000..9e66f53
--- /dev/null
+++ b/docs/user-manual/en/faq/exception-orgapachecamelnosuchendpointexception.adoc
@@ -0,0 +1,25 @@
+[[Exception-org.apache.camel.NoSuchEndpointException-Exceptionorg.apache.camel.NoSuchEndpointException]]
+=== Exception: `org.apache.camel.NoSuchEndpointException`
+
+The usual cause for this exception is a missing component JAR on the
+classpath. The exception detail message will tell you what the missing
+component is. You can solve the issue by adding the required JAR files
+to the classpath.
+
+===== Example:
+
+If you try to use the definition below without having `camel-jetty.jar` on
+the classpath, you'll run into this exception:
+----
+org.apache.camel.NoSuchEndpointException: No endpoint could be found for: jetty:http://localhost:8080/bus
+----
+
+[source,xml]
+----
+<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
+  <route>
+    <from uri="jetty:http://localhost:8080/bus" />
+    <to uri="file://C:/tmp/something.xml" /> 
+  </route>
+</camelContext>
+----
diff --git a/docs/user-manual/en/faq/exception-orgxmlsaxsaxparseexception.adoc b/docs/user-manual/en/faq/exception-orgxmlsaxsaxparseexception.adoc
new file mode 100644
index 0000000..604519e
--- /dev/null
+++ b/docs/user-manual/en/faq/exception-orgxmlsaxsaxparseexception.adoc
@@ -0,0 +1,26 @@
+[[Exception-org.xml.sax.SAXParseException-Exceptionorg.xml.sax.SAXParseException]]
+=== Exception: `org.xml.sax.SAXParseException`
+
+----
+The reference to entity "..." must end with the ';' delimiter.
+----
+
+In the URIs used for specifying Camel endpoints, the `&` is used to
+separate the parameters. However, `&` also is a reserved character in
+XML.
+Because of this, you have to replace all & in your URIs by `+&amp;+` when
+using the Spring XML syntax to configure Camel routes.
+
+An example: this snippet of code in the link:../dsl.adoc[DSL]...
+
+[source,java]
+----
+from("timer://myTimer?fixedRate=true&delay=0&period=2000")
+----
+
+...matches this example in the Spring XML syntax:
+
+[source,java]
+----
+<from>timer://myTimer?fixedRate=true&amp;delay=0&amp;period=2000</from>
+----
diff --git a/docs/user-manual/en/faq/how-do-i-enable-debug-logging.adoc b/docs/user-manual/en/faq/how-do-i-enable-debug-logging.adoc
new file mode 100644
index 0000000..e6a8660
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-enable-debug-logging.adoc
@@ -0,0 +1,33 @@
+[[HowdoIenabledebuglogging-HowdoIenabledebuglogging]]
+=== 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
+link: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/en/faq/how-do-i-invoke-camel-routes-from-jbi.adoc b/docs/user-manual/en/faq/how-do-i-invoke-camel-routes-from-jbi.adoc
new file mode 100644
index 0000000..4908a23
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-invoke-camel-routes-from-jbi.adoc
@@ -0,0 +1,34 @@
+[[HowdoIinvokeCamelroutesfromJBI-HowdoIinvokeCamelroutesfromJBI]]
+=== How do I invoke Camel routes from JBI?
+
+When you use the JBI endpoint as follows:
+
+[source,java]
+----
+from("jbi:endpoint:http://foo.bar.org/MyService/MyEndpoint")
+----
+
+you automatically expose the endpoint to the NMR bus where service qname
+is:
+
+----
+{http://foo.bar.org}MyService
+----
+
+and endpoint name is `MyEndpoint`.
+
+Then if you send a message via the JBI NMR to this JBI endpoint then it
+will be sent to the above Camel route.
+
+Sending works in the same way. You use:
+
+[source,java]
+----
+to("jbi:endpoint:http://foo.bar.org/MyService/MyEndpoint") 
+----
+
+to send messages to JBI endpoint deployed to the bus.
+
+I noticed that people are used to somehow 'declaring' endpoints in SMX.
+In Camel it is enough to simply start a flow from a jbi endpoint and
+Camel will create it automatically.
diff --git a/docs/user-manual/en/faq/how-do-i-make-my-jms-endpoint-transactional.adoc b/docs/user-manual/en/faq/how-do-i-make-my-jms-endpoint-transactional.adoc
new file mode 100644
index 0000000..ea9637e
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-make-my-jms-endpoint-transactional.adoc
@@ -0,0 +1,31 @@
+[[HowDoIMakeMyJMSEndpointTransactional-HowDoIMakeMyJMSEndpointTransactional]]
+=== 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 <<transactionalClient-eip,Transactional Client>>
+and it is described in the _Enabling Transacted Consumption_
+section of <<jms-component,JMS>>. To make a session transactional
+set `transacted=true` flag on the JMS endpoint and configure
+a `transactionManager` on the link:../component.adoc[Component] or
+link:../endpoint.adoc[Endpoint].
+
+[[HowDoIMakeMyJMSEndpointTransactional-SeeAlso]]
+==== See Also
+
+* <<transactionalClient-eip,Transactional Client>>
+* <<jms-component,JMS>>
diff --git a/docs/user-manual/en/faq/how-do-i-set-the-mep-when-interacting-with-jbi.adoc b/docs/user-manual/en/faq/how-do-i-set-the-mep-when-interacting-with-jbi.adoc
new file mode 100644
index 0000000..9f56bfe
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-set-the-mep-when-interacting-with-jbi.adoc
@@ -0,0 +1,34 @@
+[[HowdoIsettheMEPwheninteractingwithJBI-HowdoIsettheMEPwheninteractingwithJBI]]
+=== How do I set the MEP when interacting with JBI?
+
+[[HowdoIsettheMEPwheninteractingwithJBI-Problem]]
+==== Problem
+
+If you are using the Camel JBI integration to send a
+`MessageExchange` to another JBI component from within your Camel route,
+Camel uses the MEP of the underlying Camel Exchange to determine the MEP
+of the JBI `MessageExchange`. An example:
+
+[source,java]
+----
+from(""timer://foo").to("jbi:endpoint:urn:translator:endpoint").to("log:test"); //THIS WON'T WORK...
+----
+
+If the timer endpoint that starts the route sends a Camel exchange with
+an in-only MEP, the MEP for interacting with JBI will also be InOnly.
+Now imagine that the target JBI endpoint is in fact a
+http://servicemix.apache.org/servicemix-saxon.html[servicemix-saxon xslt endpoint],
+that really expects an InOut MEP. This would break the Camel
+route above.
+
+[[HowdoIsettheMEPwheninteractingwithJBI-Solution]]
+==== Solution
+
+For this case, you can override the MEP used from the Camel route
+like this, making sure that a JBI InOut `MessageExchange` is being used to
+interact with the `"urn:translation:endpoint"` endpoint.
+
+[source,java]
+----
+from("timer://foo").to("jbi:endpoint:urn:translator:endpoint?mep=in-out").to("log:test"); //...BUT THIS WILL
+----
diff --git a/docs/user-manual/en/faq/how-do-i-use-java-14-logging.adoc b/docs/user-manual/en/faq/how-do-i-use-java-14-logging.adoc
new file mode 100644
index 0000000..8ba765d
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-use-java-14-logging.adoc
@@ -0,0 +1,20 @@
+[[HowdoIuseJava14logging-HowdoIuseJava14logging]]
+=== How do I use Java 1.4 logging?
+
+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]
+
+The quick way to enable Java 1.4 logging is to create a
+`commons-logging.properties` file on the classpath with this entry...
+
+[source,java]
+----
+org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
+#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
+----
+
+Many thanks to Glen Mazza for figuring this out :smile:
diff --git a/docs/user-manual/en/faq/how-do-i-use-log4j.adoc b/docs/user-manual/en/faq/how-do-i-use-log4j.adoc
new file mode 100644
index 0000000..78436c9
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-use-log4j.adoc
@@ -0,0 +1,47 @@
+[[HowdoIuselog4j-HowdoIuseLog4j]]
+=== How do I use Log4j?
+
+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]
+
+The quick way to enable Log4j is to add log4j to your classpath or maven
+`pom.xml`. For example the following in your `pom.xml` should do the trick:
+
+[source,xml]
+----
+  <dependencies>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+  </dependencies>
+----
+
+Then to configure log4j you need to add a `log4j.properties` or
+`log4j.xml` to your classpath (so they go in a directory which is on
+your classpath).
+
+Here's an example `log4j.properties` file:
+
+[source,java]
+----
+log4j.rootLogger=INFO, out
+
+#
+# uncomment the following line to enable debugging of Camel
+#
+#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/en/faq/how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc b/docs/user-manual/en/faq/how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc
new file mode 100644
index 0000000..aeacf1a
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-the-direct-event-seda-and-vm-endpoints-compare.adoc
@@ -0,0 +1,14 @@
+[[Howdothedirecteventsedaandvmendpointscompare-Howdothedirecteventsedaandvmendpointscompare]]
+=== How do the `direct`, `event`, `seda`, and `vm` endpoints compare?
+
+* <<vm-component,VM>> and <<seda-component,SEDA>> endpoints are basically the
+same; they both offer asychronous in memory SEDA queues; they differ in
+visibility -- endpoints are visible inside the same JVM or within the same
+CamelContext respectively.
+* <<direct-component,Direct>> uses no threading; it directly invokes the
+consumer when sending.
+* <<spring-event-component,Spring Event>> adds a listener to Spring's
+application events; so the consumer is invoked the same thread as Spring
+notifies events. Event differs in that the payload should be a Spring
+`ApplicationEvent` object whereas <<direct-component,Direct>>,
+<<seda-component,SEDA>> and <<vm-component,VM>> can use any payload.
diff --git a/docs/user-manual/en/faq/how-do-the-timer-and-quartz-endpoints-compare.adoc b/docs/user-manual/en/faq/how-do-the-timer-and-quartz-endpoints-compare.adoc
new file mode 100644
index 0000000..e6d29c6
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-the-timer-and-quartz-endpoints-compare.adoc
@@ -0,0 +1,8 @@
+[[HowdotheTimerandQuartzendpointscompare-HowdotheTimerandQuartzendpointscompare]]
+=== How do the Timer and Quartz endpoints compare?
+
+<<timer-component,Timer>> is a simple, non persistence timer using the
+JDK's in built timer mechanism.
+
+<<quartz-component,Quartz>> uses the Quartz library which uses a database
+to store timer events and supports distributed timers and cron notation.
diff --git a/docs/user-manual/en/faq/memory-leak-when-adding-and-removing-routes-at-runtime.adoc b/docs/user-manual/en/faq/memory-leak-when-adding-and-removing-routes-at-runtime.adoc
new file mode 100644
index 0000000..68f703c
--- /dev/null
+++ b/docs/user-manual/en/faq/memory-leak-when-adding-and-removing-routes-at-runtime.adoc
@@ -0,0 +1,10 @@
+[[Memoryleakwhenaddingandremovingroutesatruntime-Memoryleakwhenaddingandremovingroutesatruntime]]
+=== Memory leak when adding and removing routes at runtime
+
+If you add and remove many routes at runtime, then take notice that
+link:camel-jmx.adoc[JMX] may take up memory when routes is added.
+As Camel cannot 100% reclaim all MBeans when removing a route (some
+resources may be shared by other routes, etc.).
+
+Therefore it's advised to disable JMX for new routes, by setting
+`registerNewRoutes=false`. See details at link:camel-jmx.adoc[JMX].
diff --git a/docs/user-manual/en/faq/why-do-camel-throw-so-many-noclassdeffoundexception-on-startup.adoc b/docs/user-manual/en/faq/why-do-camel-throw-so-many-noclassdeffoundexception-on-startup.adoc
new file mode 100644
index 0000000..590729d
--- /dev/null
+++ b/docs/user-manual/en/faq/why-do-camel-throw-so-many-noclassdeffoundexception-on-startup.adoc
@@ -0,0 +1,17 @@
+[[WhydoCamelthrowsomanyNoClassDefFoundExceptiononstartup-WhydoCamelthrowsomanyNoClassDefFoundExceptiononstartup]]
+=== Why do Camel throw so many `NoClassDefFoundException` on startup?
+
+Camel uses a runtime strategy to discover features while it starts up.
+This is used to register components, languages, type converters, etc.
+
+If you are using the uber .jar (the big camel.jar) with all the Camel
+components in a single .jar filen, the this problem can typically
+occur.
+Especially the type converters is know to cause `NoClassDefFoundException`
+in the log during startup. The reasons is that some of these type
+converters rely on 3rd. party .jar files.
+
+To remedy this either add the missing .jars to the classpath, or stop
+using the big .jar and use the fine grained jars.
+
+See also link:how-do-i-use-a-big-uber-jar.adoc[How do I use a big (uber) JAR?]
diff --git a/docs/user-manual/en/faq/why-does-camel-use-too-many-threads-with-producertemplate.adoc b/docs/user-manual/en/faq/why-does-camel-use-too-many-threads-with-producertemplate.adoc
new file mode 100644
index 0000000..25635ee
--- /dev/null
+++ b/docs/user-manual/en/faq/why-does-camel-use-too-many-threads-with-producertemplate.adoc
@@ -0,0 +1,29 @@
+[[WhydoesCamelusetoomanythreadswithProducerTemplate-WhydoesCamelusetoomanythreadswithProducerTemplate]]
+=== Why does Camel use too many threads with `ProducerTemplate`?
+
+A common reason is creating a new `ProducerTemplate` inside a `Processor` or
+link:../bean-integration.adoc[bean method invocation].
+
+You are not meant to create a `ProducerTemplate` for each message
+invocation; you are meant to create a single instance on startup and
+keep it around.
+
+Also when you have finished using the `ProducerTemplate` you should call
+the `stop()` method to close down all the resources it has been using.
+
+It's better to either explicitly create one on startup or get your IoC
+container (link:../spring.adoc[Spring] or link:../guice.adoc[Guice]) to inject
+it into your `Processor` or bean then it can take care of creating it and
+destroying all the resources when you have finished with it.
+
+For instance using link:../spring.adoc[Spring] you can define a template
+and have Spring handle the lifecycle of it:
+
+[source,java]
+----
+    <camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
+        <template id="template"/>
+    </camelContext>
+----
+
+Then you can refer to the ProducerTemplate with the id `template`.
diff --git a/docs/user-manual/en/faq/why-does-maven-not-download-dependencies.adoc b/docs/user-manual/en/faq/why-does-maven-not-download-dependencies.adoc
new file mode 100644
index 0000000..488cce1
--- /dev/null
+++ b/docs/user-manual/en/faq/why-does-maven-not-download-dependencies.adoc
@@ -0,0 +1,10 @@
+[[Whydoesmavennotdownloaddependencies-Whydoesmavennotdownloaddependencies]]
+=== Why does Maven not download dependencies?
+
+Maven uses HTTP to download its dependenices along with the dependencies
+of the Maven project (such as Camel).
+
+If you run Maven and it fails to download your required dependencies it's
+likely to be caused by your local firewall & HTTP proxy configurations.
+
+See the http://maven.apache.org/guides/mini/guide-proxies.html[Maven documentation for details of how to configure the HTTP proxy].
diff --git a/docs/user-manual/en/faq/why-does-my-jms-route-only-consume-one-message-at-once.adoc b/docs/user-manual/en/faq/why-does-my-jms-route-only-consume-one-message-at-once.adoc
new file mode 100644
index 0000000..335d963
--- /dev/null
+++ b/docs/user-manual/en/faq/why-does-my-jms-route-only-consume-one-message-at-once.adoc
@@ -0,0 +1,21 @@
+[[WhydoesmyJMSrouteonlyconsumeonemessageatonce-WhydoesmyJMSrouteonlyconsumeonemessageatonce]]
+=== Why does my JMS route only consume one message at once?
+
+The default <<jms-component,JMS>> endpoint configuration defines
+*concurrentConsumers* to be 1 so only 1 message is processed
+concurrently at any point in time. To change this to make things more
+concurrent, just configure this value; either at the JMS component level
+or endpoint level.
+
+E.g.
+
+[source,java]
+----
+from("activemq:SomeQueue?concurrentConsumers=25").
+  bean(SomeCode.class);
+----
+
+[[WhydoesmyJMSrouteonlyconsumeonemessageatonce-SeeAlso]]
+==== See Also
+
+* <<jms-component,JMS>> for more configuration details
diff --git a/docs/user-manual/en/graceful-shutdown.adoc b/docs/user-manual/en/graceful-shutdown.adoc
index 2047fc1..b1a3dc1 100644
--- a/docs/user-manual/en/graceful-shutdown.adoc
+++ b/docs/user-manual/en/graceful-shutdown.adoc
@@ -159,7 +159,7 @@ For example in the route below we have two routes, where route 1 is
 dependent upon route 2. At shutdown we want route 1 to complete all its
 current messages and we also want the 2nd route to do this as well. So
 we can mark both routes to `Defer` but since route 1 is a
-link:seda.html[SEDA] based route its `Defer` by default (it uses
+<<seda-component,SEDA>> based route its `Defer` by default (it uses
 `ShutdownAware`).
 
 A Java DSL based example to defer shutting down the 2nd
@@ -446,7 +446,7 @@ The interface `org.apache.camel.spi.ShutdownAware` is an optional
 interface consumers can implement to have fine grained control during
 shutdown. The `ShutdownStrategy` must be able to deal with consumers
 which implement this interface. This interface was introduced to cater
-for in memory consumers such as link:seda.html[SEDA] which potentially
+for in memory consumers such as <<seda-component,SEDA>> which potentially
 have a number of pending messages on its internal in memory queues. What
 this allows is to let it control the shutdown process to let it complete
 its pending messages.