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 2019/09/04 21:02:03 UTC

[camel] 09/16: CAMEL-13932: backport changes from master

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

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

commit 80d2d2a55d2806f887a48dbf0a2ef49029b8f79d
Author: Zoran Regvart <zr...@apache.org>
AuthorDate: Fri Aug 23 17:22:16 2019 +0200

    CAMEL-13932: backport changes from master
    
    This backports the documentation build system needed for Antora to
    publish component reference only.
---
 docs/.gitignore                                    |    1 +
 docs/component-nav.adoc.template                   |    4 +
 .../modules/ROOT/assets/images/apache-ignite.png   |  Bin 0 -> 919833 bytes
 .../modules/ROOT/assets/images/camel-jmx.png       |  Bin 0 -> 125681 bytes
 .../ROOT/assets/images}/camel_spark_cluster.png    |  Bin
 .../ROOT/assets/images}/camel_spark_driver.png     |  Bin
 .../assets/images/jconsole_trace_notifications.png |  Bin 0 -> 148944 bytes
 .../modules/ROOT/assets/images}/qr-code.png        |  Bin
 .../quickfixj/QuickfixjSpringTest-context.xml      |  129 ++
 docs/components/modules/ROOT/nav.adoc              |   59 +-
 .../modules/ROOT/pages/ahc-component.adoc          |  453 +++-
 .../modules/ROOT/pages/ahc-ws-component.adoc       |  188 +-
 .../modules/ROOT/pages/amqp-component.adoc         |  467 +++-
 .../modules/ROOT/pages/apns-component.adoc         |  324 ++-
 .../modules/ROOT/pages/as2-component.adoc          |  273 +++
 .../modules/ROOT/pages/asn1-dataformat.adoc        |   94 +-
 .../modules/ROOT/pages/asterisk-component.adoc     |   94 +-
 .../modules/ROOT/pages/atmos-component.adoc        |  168 +-
 .../ROOT/pages/atmosphere-websocket-component.adoc |  209 +-
 .../modules/ROOT/pages/atom-component.adoc         |  160 +-
 .../modules/ROOT/pages/atomix-map-component.adoc   |  216 +-
 .../ROOT/pages/atomix-messaging-component.adoc     |  112 +-
 .../ROOT/pages/atomix-multimap-component.adoc      |  110 +-
 .../modules/ROOT/pages/atomix-queue-component.adoc |  106 +-
 .../modules/ROOT/pages/atomix-set-component.adoc   |  108 +-
 .../modules/ROOT/pages/atomix-value-component.adoc |  108 +-
 .../modules/ROOT/pages/avro-component.adoc         |  336 ++-
 .../modules/ROOT/pages/avro-dataformat.adoc        |  173 +-
 .../modules/ROOT/pages/aws-cw-component.adoc       |  207 +-
 .../modules/ROOT/pages/aws-ddb-component.adoc      |  378 ++-
 .../ROOT/pages/aws-ddbstream-component.adoc        |  234 +-
 .../modules/ROOT/pages/aws-ec2-component.adoc      |  173 +-
 .../modules/ROOT/pages/aws-iam-component.adoc      |  173 +-
 .../modules/ROOT/pages/aws-kinesis-component.adoc  |  262 ++-
 .../ROOT/pages/aws-kinesis-firehose-component.adoc |  198 +-
 .../modules/ROOT/pages/aws-kms-component.adoc      |  171 +-
 .../modules/ROOT/pages/aws-lambda-component.adoc   |  228 +-
 .../modules/ROOT/pages/aws-mq-component.adoc       |  172 +-
 .../modules/ROOT/pages/aws-s3-component.adoc       |  410 +++-
 .../modules/ROOT/pages/aws-sdb-component.adoc      |  245 +-
 .../modules/ROOT/pages/aws-ses-component.adoc      |  208 +-
 .../modules/ROOT/pages/aws-sns-component.adoc      |  203 +-
 .../modules/ROOT/pages/aws-sqs-component.adoc      |  339 ++-
 .../modules/ROOT/pages/aws-swf-component.adoc      |  298 ++-
 docs/components/modules/ROOT/pages/aws-xray.adoc   |  116 +-
 docs/components/modules/ROOT/pages/aws.adoc        |    6 +-
 .../modules/ROOT/pages/azure-blob-component.adoc   |  232 +-
 .../modules/ROOT/pages/azure-queue-component.adoc  |  171 +-
 docs/components/modules/ROOT/pages/azure.adoc      |   15 +-
 .../components/modules/ROOT/pages/bam-example.adoc |   90 +-
 docs/components/modules/ROOT/pages/bam.adoc        |   85 +-
 .../modules/ROOT/pages/barcode-dataformat.adoc     |  152 +-
 .../modules/ROOT/pages/base64-dataformat.adoc      |  133 +-
 .../ROOT/pages/bean-validator-component.adoc       |  292 ++-
 .../modules/ROOT/pages/beanio-dataformat.adoc      |  107 +-
 .../modules/ROOT/pages/beanstalk-component.adoc    |  244 +-
 .../modules/ROOT/pages/bindy-dataformat.adoc       | 1868 ++++++++++++++-
 docs/components/modules/ROOT/pages/blueprint.adoc  |   46 +-
 .../modules/ROOT/pages/bonita-component.adoc       |  108 +-
 .../modules/ROOT/pages/boon-dataformat.adoc        |   93 +-
 .../modules/ROOT/pages/box-component.adoc          |  802 +++++++
 .../modules/ROOT/pages/braintree-component.adoc    |  871 ++++++-
 .../modules/ROOT/pages/cache-component.adoc        |  481 +++-
 .../ROOT/pages/caffeine-cache-component.adoc       |  159 +-
 .../ROOT/pages/caffeine-loadcache-component.adoc   |  126 +-
 .../modules/ROOT/pages/castor-dataformat.adoc      |  169 +-
 docs/components/modules/ROOT/pages/cdi.adoc        |  850 ++++++-
 .../ROOT/pages/chronicle-engine-component.adoc     |   83 +-
 .../modules/ROOT/pages/chunk-component.adoc        |  203 +-
 .../modules/ROOT/pages/cm-sms-component.adoc       |    1 -
 .../modules/ROOT/pages/cmis-component.adoc         |  156 +-
 .../modules/ROOT/pages/coap-component.adoc         |  131 +-
 .../modules/ROOT/pages/cometd-component.adoc       |  228 +-
 .../modules/ROOT/pages/consul-component.adoc       |  225 +-
 .../modules/ROOT/pages/context-component.adoc      |  196 +-
 .../modules/ROOT/pages/corda-component.adoc        |  140 +-
 .../modules/ROOT/pages/couchbase-component.adoc    |  135 +-
 .../modules/ROOT/pages/couchdb-component.adoc      |  170 +-
 .../modules/ROOT/pages/cql-component.adoc          |  282 ++-
 .../modules/ROOT/pages/crypto-cms-component.adoc   |  413 +++-
 .../modules/ROOT/pages/crypto-component.adoc       |  281 ++-
 .../modules/ROOT/pages/crypto-dataformat.adoc      |  324 ++-
 .../modules/ROOT/pages/csv-dataformat.adoc         |  404 +++-
 .../modules/ROOT/pages/cxf-component.adoc          |  881 ++++++-
 .../modules/ROOT/pages/cxf-transport.adoc          |  256 +-
 .../modules/ROOT/pages/cxfrs-component.adoc        |  492 +++-
 .../modules/ROOT/pages/digitalocean-component.adoc |  472 +++-
 .../modules/ROOT/pages/disruptor-component.adoc    |  354 ++-
 .../modules/ROOT/pages/dns-component.adoc          |  193 +-
 .../modules/ROOT/pages/docker-component.adoc       |  170 +-
 .../modules/ROOT/pages/dozer-component.adoc        |  296 ++-
 .../modules/ROOT/pages/drill-component.adoc        |   92 +-
 .../modules/ROOT/pages/dropbox-component.adoc      |  428 +++-
 docs/components/modules/ROOT/pages/eclipse.adoc    |   59 +-
 .../modules/ROOT/pages/ehcache-component.adoc      |  270 ++-
 .../modules/ROOT/pages/ejb-component.adoc          |  227 +-
 .../components/modules/ROOT/pages/el-language.adoc |  124 +-
 .../ROOT/pages/elasticsearch-component.adoc        |  198 +-
 .../ROOT/pages/elasticsearch-rest-component.adoc   |  336 ++-
 .../ROOT/pages/elasticsearch5-component.adoc       |  198 +-
 .../modules/ROOT/pages/elsql-component.adoc        |  289 ++-
 .../modules/ROOT/pages/etcd-component.adoc         |  122 +-
 .../modules/ROOT/pages/eventadmin-component.adoc   |  102 +-
 .../modules/ROOT/pages/exec-component.adoc         |  251 +-
 .../modules/ROOT/pages/facebook-component.adoc     |  356 ++-
 .../modules/ROOT/pages/fhir-component.adoc         |  152 ++
 .../modules/ROOT/pages/fhirJson-dataformat.adoc    |   63 +
 .../modules/ROOT/pages/fhirXml-dataformat.adoc     |   63 +
 .../modules/ROOT/pages/flatpack-component.adoc     |  331 ++-
 .../modules/ROOT/pages/flatpack-dataformat.adoc    |  122 +-
 .../modules/ROOT/pages/flink-component.adoc        |  175 +-
 .../modules/ROOT/pages/fop-component.adoc          |  182 +-
 .../modules/ROOT/pages/freemarker-component.adoc   |  256 +-
 .../modules/ROOT/pages/ftp-component.adoc          |  756 +++++-
 .../modules/ROOT/pages/ftps-component.adoc         |  209 +-
 .../modules/ROOT/pages/ganglia-component.adoc      |  188 +-
 .../modules/ROOT/pages/geocoder-component.adoc     |  189 +-
 .../modules/ROOT/pages/git-component.adoc          |  148 +-
 .../modules/ROOT/pages/github-component.adoc       |  146 +-
 .../ROOT/pages/google-bigquery-component.adoc      |  181 +-
 .../ROOT/pages/google-bigquery-sql-component.adoc  |  150 +-
 .../ROOT/pages/google-calendar-component.adoc      |  193 +-
 .../pages/google-calendar-stream-component.adoc    |  164 +-
 .../modules/ROOT/pages/google-drive-component.adoc |  198 +-
 .../modules/ROOT/pages/google-mail-component.adoc  |  186 +-
 .../ROOT/pages/google-mail-stream-component.adoc   |  158 +-
 .../ROOT/pages/google-pubsub-component.adoc        |  178 +-
 .../ROOT/pages/google-sheets-component.adoc        |  182 +-
 .../ROOT/pages/google-sheets-stream-component.adoc |  168 +-
 .../modules/ROOT/pages/gora-component.adoc         |  281 ++-
 .../modules/ROOT/pages/grape-component.adoc        |  244 +-
 docs/components/modules/ROOT/pages/groovy-dsl.adoc |  402 +++-
 .../modules/ROOT/pages/groovy-language.adoc        |  211 +-
 .../modules/ROOT/pages/grpc-component.adoc         |  291 ++-
 .../ROOT/pages/guava-eventbus-component.adoc       |  240 +-
 docs/components/modules/ROOT/pages/guice.adoc      |  161 +-
 docs/components/modules/ROOT/pages/hawtdb.adoc     |  150 +-
 .../pages/hazelcast-atomicvalue-component.adoc     |  236 +-
 .../ROOT/pages/hazelcast-instance-component.adoc   |  151 +-
 .../ROOT/pages/hazelcast-list-component.adoc       |  160 +-
 .../ROOT/pages/hazelcast-map-component.adoc        |  361 ++-
 .../ROOT/pages/hazelcast-multimap-component.adoc   |  264 ++-
 .../ROOT/pages/hazelcast-queue-component.adoc      |  246 +-
 .../pages/hazelcast-replicatedmap-component.adoc   |  237 +-
 .../ROOT/pages/hazelcast-ringbuffer-component.adoc |  141 +-
 .../ROOT/pages/hazelcast-seda-component.adoc       |  135 +-
 .../ROOT/pages/hazelcast-set-component.adoc        |   86 +-
 .../ROOT/pages/hazelcast-topic-component.adoc      |  121 +-
 docs/components/modules/ROOT/pages/hazelcast.adoc  |  166 +-
 .../modules/ROOT/pages/hbase-component.adoc        |  518 ++++-
 .../modules/ROOT/pages/hdfs-component.adoc         |  309 ++-
 .../modules/ROOT/pages/hdfs2-component.adoc        |  308 ++-
 docs/components/modules/ROOT/pages/headersmap.adoc |   36 +-
 .../modules/ROOT/pages/hessian-dataformat.adoc     |   75 +-
 .../modules/ROOT/pages/hipchat-component.adoc      |  238 +-
 .../modules/ROOT/pages/hl7-dataformat.adoc         |  425 +++-
 .../modules/ROOT/pages/http-component.adoc         |  680 +++++-
 .../modules/ROOT/pages/http4-component.adoc        |  725 +++++-
 docs/components/modules/ROOT/pages/hystrix.adoc    |   38 +-
 .../modules/ROOT/pages/ibatis-component.adoc       |  260 ++-
 .../modules/ROOT/pages/ical-dataformat.adoc        |   88 +-
 .../ROOT/pages/iec60870-client-component.adoc      |  138 +-
 .../ROOT/pages/iec60870-server-component.adoc      |  125 +-
 .../modules/ROOT/pages/ignite-cache-component.adoc |  122 +-
 .../ROOT/pages/ignite-compute-component.adoc       |  123 +-
 .../ROOT/pages/ignite-events-component.adoc        |   81 +-
 .../modules/ROOT/pages/ignite-idgen-component.adoc |   78 +-
 .../ROOT/pages/ignite-messaging-component.adoc     |   97 +-
 .../modules/ROOT/pages/ignite-queue-component.adoc |  101 +-
 .../modules/ROOT/pages/ignite-set-component.adoc   |   90 +-
 docs/components/modules/ROOT/pages/ignite.adoc     |  107 +-
 docs/components/modules/ROOT/pages/index.adoc      |  386 +++
 .../modules/ROOT/pages/infinispan-component.adoc   |  844 ++++++-
 .../modules/ROOT/pages/influxdb-component.adoc     |  120 +-
 .../modules/ROOT/pages/iota-component.adoc         |  161 +-
 .../modules/ROOT/pages/ipfs-component.adoc         |   97 +-
 .../modules/ROOT/pages/irc-component.adoc          |  234 +-
 .../modules/ROOT/pages/ironmq-component.adoc       |  176 +-
 .../modules/ROOT/pages/jacksonxml-dataformat.adoc  |  391 +++-
 docs/components/modules/ROOT/pages/jasypt.adoc     |  289 ++-
 .../modules/ROOT/pages/javaScript-language.adoc    |  207 +-
 .../modules/ROOT/pages/javaspace-component.adoc    |  168 +-
 .../modules/ROOT/pages/jaxb-dataformat.adoc        |  352 ++-
 .../modules/ROOT/pages/jbpm-component.adoc         |  291 ++-
 .../modules/ROOT/pages/jcache-component.adoc       |  343 ++-
 .../modules/ROOT/pages/jclouds-component.adoc      |  383 ++-
 .../modules/ROOT/pages/jcr-component.adoc          |  137 +-
 .../modules/ROOT/pages/jdbc-component.adoc         |  257 +-
 .../modules/ROOT/pages/jetty-component.adoc        |  786 ++++++-
 .../modules/ROOT/pages/jgroups-component.adoc      |  284 ++-
 .../modules/ROOT/pages/jgroups-raft-component.adoc |  198 +-
 .../modules/ROOT/pages/jibx-dataformat.adoc        |  112 +-
 .../modules/ROOT/pages/jing-component.adoc         |  107 +-
 .../modules/ROOT/pages/jira-component.adoc         |  251 +-
 .../modules/ROOT/pages/jms-component.adoc          | 1528 +++++++++++-
 .../modules/ROOT/pages/jmx-component.adoc          |  102 +-
 .../modules/ROOT/pages/jolt-component.adoc         |  144 +-
 .../modules/ROOT/pages/jpa-component.adoc          |  453 +++-
 .../ROOT/pages/json-fastjson-dataformat.adoc       |  101 +-
 .../modules/ROOT/pages/json-gson-dataformat.adoc   |  102 +-
 .../ROOT/pages/json-jackson-dataformat.adoc        |  110 +-
 .../ROOT/pages/json-johnzon-dataformat.adoc        |  102 +-
 .../ROOT/pages/json-validator-component.adoc       |  148 +-
 .../ROOT/pages/json-xstream-dataformat.adoc        |   84 +-
 .../modules/ROOT/pages/jsonpath-language.adoc      |  359 ++-
 .../modules/ROOT/pages/jt400-component.adoc        |  214 +-
 .../modules/ROOT/pages/jxpath-language.adoc        |  173 +-
 .../modules/ROOT/pages/kafka-component.adoc        |  588 ++++-
 .../modules/ROOT/pages/kestrel-component.adoc      |  301 ++-
 .../modules/ROOT/pages/krati-component.adoc        |  236 +-
 .../modules/ROOT/pages/kubernetes-component.adoc   |  290 ++-
 .../pages/kubernetes-config-maps-component.adoc    |   81 +-
 .../pages/kubernetes-deployments-component.adoc    |   90 +-
 .../ROOT/pages/kubernetes-hpa-component.adoc       |   91 +-
 .../ROOT/pages/kubernetes-job-component.adoc       |   90 +-
 .../pages/kubernetes-namespaces-component.adoc     |   91 +-
 .../ROOT/pages/kubernetes-nodes-component.adoc     |   91 +-
 ...rnetes-persistent-volumes-claims-component.adoc |   82 +-
 .../kubernetes-persistent-volumes-component.adoc   |   82 +-
 .../ROOT/pages/kubernetes-pods-component.adoc      |   90 +-
 ...bernetes-replication-controllers-component.adoc |   91 +-
 .../kubernetes-resources-quota-component.adoc      |   82 +-
 .../ROOT/pages/kubernetes-secrets-component.adoc   |   82 +-
 .../kubernetes-service-accounts-component.adoc     |   80 +-
 .../ROOT/pages/kubernetes-services-component.adoc  |   91 +-
 docs/components/modules/ROOT/pages/kubernetes.adoc |  150 +-
 docs/components/modules/ROOT/pages/kura.adoc       |  299 ++-
 .../modules/ROOT/pages/ldap-component.adoc         |  358 ++-
 .../modules/ROOT/pages/ldif-component.adoc         |  190 +-
 docs/components/modules/ROOT/pages/leveldb.adoc    |  152 +-
 .../modules/ROOT/pages/linkedin-component.adoc     |  717 ++++++
 .../modules/ROOT/pages/lpr-component.adoc          |  164 +-
 docs/components/modules/ROOT/pages/lra.adoc        |   38 +-
 .../modules/ROOT/pages/lucene-component.adoc       |  259 ++-
 .../modules/ROOT/pages/lumberjack-component.adoc   |  134 +-
 .../modules/ROOT/pages/lzf-dataformat.adoc         |   86 +-
 .../modules/ROOT/pages/mail-component.adoc         |  721 +++++-
 .../modules/ROOT/pages/master-component.adoc       |  179 +-
 .../modules/ROOT/pages/metrics-component.adoc      |  648 +++++-
 .../modules/ROOT/pages/micrometer-component.adoc   |  585 ++++-
 .../modules/ROOT/pages/milo-client-component.adoc  |  242 +-
 .../modules/ROOT/pages/milo-server-component.adoc  |  143 +-
 .../ROOT/pages/mime-multipart-dataformat.adoc      |  197 +-
 .../modules/ROOT/pages/mina-component.adoc         |  317 ++-
 .../modules/ROOT/pages/mina2-component.adoc        |  319 ++-
 .../modules/ROOT/pages/mllp-component.adoc         |  267 ++-
 .../modules/ROOT/pages/mongodb-component.adoc      |  983 +++++++-
 .../ROOT/pages/mongodb-gridfs-component.adoc       |  228 +-
 .../modules/ROOT/pages/mongodb3-component.adoc     |  962 +++++++-
 .../modules/ROOT/pages/mqtt-component.adoc         |  187 +-
 .../modules/ROOT/pages/msv-component.adoc          |  141 +-
 .../modules/ROOT/pages/mustache-component.adoc     |  199 +-
 .../modules/ROOT/pages/mvel-component.adoc         |  194 +-
 .../modules/ROOT/pages/mvel-language.adoc          |  139 +-
 .../modules/ROOT/pages/mybatis-bean-component.adoc |  169 +-
 .../modules/ROOT/pages/mybatis-component.adoc      |  426 +++-
 .../modules/ROOT/pages/nagios-component.adoc       |  171 +-
 .../modules/ROOT/pages/nats-component.adoc         |  159 +-
 .../modules/ROOT/pages/netty-component.adoc        |  766 +++++-
 .../modules/ROOT/pages/netty-http-component.adoc   |  609 ++++-
 .../modules/ROOT/pages/netty4-component.adoc       |  788 ++++++-
 .../modules/ROOT/pages/netty4-http-component.adoc  |  581 ++++-
 .../modules/ROOT/pages/nsq-component.adoc          |  109 +-
 .../modules/ROOT/pages/ognl-language.adoc          |  144 +-
 .../modules/ROOT/pages/olingo2-component.adoc      |  321 +++
 .../modules/ROOT/pages/olingo4-component.adoc      |  299 +++
 .../pages/openshift-build-configs-component.adoc   |   66 +-
 .../ROOT/pages/openshift-builds-component.adoc     |   66 +-
 .../modules/ROOT/pages/openshift-component.adoc    |  195 +-
 .../ROOT/pages/openstack-cinder-component.adoc     |  186 +-
 .../ROOT/pages/openstack-glance-component.adoc     |  146 +-
 .../ROOT/pages/openstack-keystone-component.adoc   |  292 ++-
 .../ROOT/pages/openstack-neutron-component.adoc    |  264 ++-
 .../ROOT/pages/openstack-nova-component.adoc       |  215 +-
 .../ROOT/pages/openstack-swift-component.adoc      |  192 +-
 docs/components/modules/ROOT/pages/openstack.adoc  |   33 +-
 .../components/modules/ROOT/pages/opentracing.adoc |  115 +-
 .../modules/ROOT/pages/optaplanner-component.adoc  |  163 +-
 .../modules/ROOT/pages/paho-component.adoc         |  212 +-
 .../modules/ROOT/pages/paxlogging-component.adoc   |  108 +-
 .../modules/ROOT/pages/pdf-component.adoc          |  115 +-
 .../modules/ROOT/pages/pgevent-component.adoc      |   98 +-
 .../modules/ROOT/pages/pgp-dataformat.adoc         |  309 ++-
 .../modules/ROOT/pages/php-language.adoc           |  152 +-
 .../modules/ROOT/pages/protobuf-dataformat.adoc    |  233 +-
 .../modules/ROOT/pages/pubnub-component.adoc       |  214 +-
 .../modules/ROOT/pages/pulsar-component.adoc       |  112 +-
 .../modules/ROOT/pages/python-language.adoc        |  185 +-
 .../modules/ROOT/pages/quartz-component.adoc       |  452 +++-
 .../modules/ROOT/pages/quartz2-component.adoc      |  349 ++-
 .../modules/ROOT/pages/quickfix-component.adoc     |  606 ++++-
 .../modules/ROOT/pages/rabbitmq-component.adoc     |  428 +++-
 .../ROOT/pages/reactive-streams-component.adoc     |  432 +++-
 .../modules/ROOT/pages/reactor-component.adoc      |   17 +-
 .../modules/ROOT/pages/rest-swagger-component.adoc |  229 +-
 .../modules/ROOT/pages/restlet-component.adoc      |  421 +++-
 docs/components/modules/ROOT/pages/ribbon.adoc     |   77 +-
 .../modules/ROOT/pages/rmi-component.adoc          |  151 +-
 .../modules/ROOT/pages/routebox-component.adoc     |  297 ++-
 .../modules/ROOT/pages/rss-component.adoc          |  190 +-
 .../modules/ROOT/pages/rss-dataformat.adoc         |   55 +-
 .../modules/ROOT/pages/ruby-language.adoc          |  185 +-
 docs/components/modules/ROOT/pages/ruby.adoc       |  178 +-
 docs/components/modules/ROOT/pages/rx.adoc         |  194 +-
 docs/components/modules/ROOT/pages/rxjava2.adoc    |   21 +-
 .../modules/ROOT/pages/salesforce-component.adoc   |  839 +++++++
 .../ROOT/pages/sap-netweaver-component.adoc        |  202 +-
 docs/components/modules/ROOT/pages/scala-eip.adoc  |  224 +-
 .../modules/ROOT/pages/scala-getting-started.adoc  |   59 +-
 .../ROOT/pages/scala-supported-languages.adoc      |   28 +-
 docs/components/modules/ROOT/pages/scala.adoc      |   78 +-
 .../modules/ROOT/pages/schematron-component.adoc   |  202 +-
 .../modules/ROOT/pages/scp-component.adoc          |  142 +-
 docs/components/modules/ROOT/pages/scr.adoc        |  655 +++++-
 docs/components/modules/ROOT/pages/script.adoc     |  102 +-
 .../modules/ROOT/pages/secureXML-dataformat.adoc   |  254 +-
 .../modules/ROOT/pages/service-component.adoc      |   92 +-
 .../modules/ROOT/pages/servicenow-component.adoc   |  381 +++
 .../modules/ROOT/pages/servlet-component.adoc      |  480 +++-
 .../modules/ROOT/pages/servletlistener.adoc        |  355 ++-
 .../modules/ROOT/pages/sftp-component.adoc         |  180 +-
 docs/components/modules/ROOT/pages/shiro.adoc      |  301 ++-
 .../modules/ROOT/pages/sip-component.adoc          |  235 +-
 .../modules/ROOT/pages/sjms-batch-component.adoc   |  215 +-
 .../modules/ROOT/pages/sjms-component.adoc         |  581 ++++-
 .../modules/ROOT/pages/sjms2-component.adoc        |  603 ++++-
 .../modules/ROOT/pages/slack-component.adoc        |  182 +-
 .../modules/ROOT/pages/smpp-component.adoc         |  662 +++++-
 .../modules/ROOT/pages/snmp-component.adoc         |  213 +-
 .../modules/ROOT/pages/soapjaxb-dataformat.adoc    |  256 +-
 .../modules/ROOT/pages/solr-component.adoc         |  228 +-
 .../modules/ROOT/pages/spark-component.adoc        |  417 +++-
 .../modules/ROOT/pages/spark-rest-component.adoc   |  186 +-
 .../modules/ROOT/pages/spel-language.adoc          |  155 +-
 .../modules/ROOT/pages/splunk-component.adoc       |  259 ++-
 .../modules/ROOT/pages/spring-batch-component.adoc |  296 ++-
 .../components/modules/ROOT/pages/spring-boot.adoc |  629 ++++-
 .../modules/ROOT/pages/spring-cloud-consul.adoc    |    4 +-
 .../modules/ROOT/pages/spring-cloud-netflix.adoc   |   47 +-
 .../modules/ROOT/pages/spring-cloud-zookeeper.adoc |    4 +-
 .../modules/ROOT/pages/spring-cloud.adoc           |   39 +-
 .../modules/ROOT/pages/spring-event-component.adoc |   83 +-
 .../ROOT/pages/spring-integration-component.adoc   |  126 +-
 .../modules/ROOT/pages/spring-javaconfig.adoc      |   88 +-
 .../modules/ROOT/pages/spring-ldap-component.adoc  |  152 +-
 .../modules/ROOT/pages/spring-redis-component.adoc |  399 +++-
 .../modules/ROOT/pages/spring-security.adoc        |  201 +-
 .../modules/ROOT/pages/spring-ws-component.adoc    |  618 ++++-
 docs/components/modules/ROOT/pages/spring.adoc     |  357 ++-
 .../modules/ROOT/pages/sql-component.adoc          |  811 ++++++-
 .../modules/ROOT/pages/sql-language.adoc           |  102 +-
 .../modules/ROOT/pages/sql-stored-component.adoc   |  268 ++-
 .../modules/ROOT/pages/ssh-component.adoc          |  266 ++-
 .../modules/ROOT/pages/stax-component.adoc         |  229 +-
 .../modules/ROOT/pages/stomp-component.adoc        |  174 +-
 .../modules/ROOT/pages/stream-component.adoc       |  175 +-
 .../ROOT/pages/string-template-component.adoc      |  152 +-
 .../modules/ROOT/pages/swagger-java.adoc           |  195 +-
 docs/components/modules/ROOT/pages/swagger.adoc    |  248 +-
 .../modules/ROOT/pages/syslog-dataformat.adoc      |  148 +-
 .../modules/ROOT/pages/tarfile-dataformat.adoc     |  184 +-
 .../modules/ROOT/pages/telegram-component.adoc     |  426 +++-
 .../modules/ROOT/pages/terser-language.adoc        |   45 +-
 .../modules/ROOT/pages/test-blueprint.adoc         |  176 +-
 docs/components/modules/ROOT/pages/test-cdi.adoc   |  727 +++++-
 docs/components/modules/ROOT/pages/test-karaf.adoc |   11 +-
 .../components/modules/ROOT/pages/test-spring.adoc |  460 +++-
 docs/components/modules/ROOT/pages/test.adoc       |   48 +-
 .../modules/ROOT/pages/testcontainers-spring.adoc  |   10 +-
 .../modules/ROOT/pages/testcontainers.adoc         |  117 +-
 docs/components/modules/ROOT/pages/testng.adoc     |    8 +-
 .../modules/ROOT/pages/thrift-component.adoc       |  179 +-
 .../modules/ROOT/pages/thrift-dataformat.adoc      |  178 +-
 .../modules/ROOT/pages/tidyMarkup-dataformat.adoc  |  102 +-
 .../modules/ROOT/pages/tika-component.adoc         |  107 +-
 .../modules/ROOT/pages/twilio-component.adoc       |  222 +-
 .../modules/ROOT/pages/twitter-component.adoc      |  328 ++-
 .../pages/twitter-directmessage-component.adoc     |  125 +-
 .../ROOT/pages/twitter-search-component.adoc       |  134 +-
 .../ROOT/pages/twitter-streaming-component.adoc    |  127 +-
 .../ROOT/pages/twitter-timeline-component.adoc     |  126 +-
 docs/components/modules/ROOT/pages/twitter.adoc    |  147 +-
 .../modules/ROOT/pages/undertow-component.adoc     |  214 +-
 .../ROOT/pages/univocity-csv-dataformat.adoc       |  203 +-
 .../ROOT/pages/univocity-fixed-dataformat.adoc     |  201 +-
 .../ROOT/pages/univocity-tsv-dataformat.adoc       |  197 +-
 docs/components/modules/ROOT/pages/urlrewrite.adoc |  189 +-
 .../modules/ROOT/pages/velocity-component.adoc     |  282 ++-
 .../modules/ROOT/pages/vertx-component.adoc        |  134 +-
 .../modules/ROOT/pages/weather-component.adoc      |  216 +-
 .../modules/ROOT/pages/web3j-component.adoc        |  202 +-
 .../modules/ROOT/pages/websocket-component.adoc    |  266 ++-
 .../ROOT/pages/websocket-jsr356-component.adoc     |   85 +-
 .../modules/ROOT/pages/wordpress-component.adoc    |  140 +-
 .../modules/ROOT/pages/xchange-component.adoc      |  117 +-
 .../modules/ROOT/pages/xmlBeans-dataformat.adoc    |   67 +-
 .../modules/ROOT/pages/xmljson-dataformat.adoc     |    1 -
 .../modules/ROOT/pages/xmlrpc-component.adoc       |  210 +-
 .../modules/ROOT/pages/xmlrpc-dataformat.adoc      |   73 +-
 .../modules/ROOT/pages/xmlsecurity-component.adoc  |  784 ++++++-
 .../modules/ROOT/pages/xmpp-component.adoc         |  180 +-
 .../modules/ROOT/pages/xquery-component.adoc       |  311 ++-
 .../modules/ROOT/pages/xquery-language.adoc        |  236 +-
 .../modules/ROOT/pages/xstream-dataformat.adoc     |  186 +-
 .../ROOT/pages/yaml-snakeyaml-dataformat.adoc      |  175 +-
 .../modules/ROOT/pages/yammer-component.adoc       |  381 ++-
 .../modules/ROOT/pages/yql-component.adoc          |    1 -
 .../modules/ROOT/pages/zendesk-component.adoc      |  136 +-
 .../modules/ROOT/pages/zipfile-dataformat.adoc     |  183 +-
 docs/components/modules/ROOT/pages/zipkin.adoc     |  283 ++-
 .../modules/ROOT/pages/zookeeper-component.adoc    |  292 ++-
 .../ROOT/pages/zookeeper-master-component.adoc     |  168 +-
 docs/generated.txt                                 |    2 +
 docs/gulpfile.js                                   |  136 +-
 docs/img/logo-d.svg                                |   46 +
 docs/nav.adoc.template                             |    2 -
 docs/package.json                                  |    7 +-
 docs/pom.xml                                       |  144 +-
 docs/site.yml                                      |   12 +
 docs/theme/apache-theme.yml                        |  284 ---
 docs/theme/fonts/DroidSerif-Bold.ttf               |  Bin 185228 -> 0 bytes
 docs/theme/fonts/DroidSerif-BoldItalic.ttf         |  Bin 190304 -> 0 bytes
 docs/theme/fonts/DroidSerif-Italic.ttf             |  Bin 177560 -> 0 bytes
 docs/theme/fonts/DroidSerif-Regular.ttf            |  Bin 172916 -> 0 bytes
 docs/theme/fonts/DroidSerif_Apache License.txt     |  201 --
 docs/theme/fonts/OpenSans-Bold.ttf                 |  Bin 224452 -> 0 bytes
 docs/theme/fonts/OpenSans-BoldItalic.ttf           |  Bin 213168 -> 0 bytes
 docs/theme/fonts/OpenSans-ExtraBold.ttf            |  Bin 222424 -> 0 bytes
 docs/theme/fonts/OpenSans-ExtraBoldItalic.ttf      |  Bin 213336 -> 0 bytes
 docs/theme/fonts/OpenSans-Italic.ttf               |  Bin 212760 -> 0 bytes
 docs/theme/fonts/OpenSans-Light.ttf                |  Bin 222236 -> 0 bytes
 docs/theme/fonts/OpenSans-LightItalic.ttf          |  Bin 213024 -> 0 bytes
 docs/theme/fonts/OpenSans-Regular.ttf              |  Bin 217276 -> 0 bytes
 docs/theme/fonts/OpenSans-SemiBold.ttf             |  Bin 221164 -> 0 bytes
 docs/theme/fonts/OpenSans-SemiBoldItalic.ttf       |  Bin 212732 -> 0 bytes
 docs/theme/fonts/OpenSans_LICENSE.txt              |  202 --
 docs/theme/images/asf_logo.png                     |  Bin 21243 -> 0 bytes
 docs/theme/images/asf_logo_url.png                 |  Bin 21121 -> 0 bytes
 docs/user-manual/antora.yml                        |    5 -
 docs/user-manual/en/README.md                      |    7 -
 docs/user-manual/en/apache.css                     | 2448 --------------------
 docs/user-manual/en/book.json                      |   15 -
 .../en/books/3151EN_Mastering_Apache_Camel.jpg     |  Bin 129296 -> 0 bytes
 docs/user-manual/en/books/3477OS.jpg               |  Bin 26159 -> 0 bytes
 docs/user-manual/en/books/3477OSmall.jpg           |  Bin 44674 -> 0 bytes
 docs/user-manual/en/books/5347OSmall.jpg           |  Bin 42924 -> 0 bytes
 .../en/books/B03507_MockupCover_Normal.jpg         |  Bin 177120 -> 0 bytes
 docs/user-manual/en/books/CamelCookbookCover.png   |  Bin 340571 -> 0 bytes
 docs/user-manual/en/books/CiA-front-medium.png     |  Bin 149095 -> 0 bytes
 .../user-manual/en/books/camel-design-patterns.jpg |  Bin 46890 -> 0 bytes
 docs/user-manual/en/books/cia2-cover-small.jpg     |  Bin 46646 -> 0 bytes
 docs/user-manual/en/books/cia_small.jpg            |  Bin 22213 -> 0 bytes
 docs/user-manual/en/books/eip_book_cover.jpg       |  Bin 16091 -> 0 bytes
 docs/user-manual/en/books/large.jpg                |  Bin 58398 -> 0 bytes
 docs/user-manual/en/books/rademakers.jpg           |  Bin 87220 -> 0 bytes
 .../en/faq/can-i-get-commercial-support.adoc       |    4 -
 .../en/faq/can-i-use-camel-on-java-14.adoc         |    9 -
 ...loader-issue-of-servicemix-camel-component.adoc |   43 -
 .../en/faq/does-camel-work-on-ibms-jdk.adoc        |   32 -
 .../exception-beandefinitionstoreexception.adoc    |   50 -
 ...ption-javaxnamingnoinitialcontextexception.adoc |   36 -
 ...tion-orgapachecamelnosuchendpointexception.adoc |   25 -
 .../faq/exception-orgxmlsaxsaxparseexception.adoc  |   26 -
 ...an-i-create-a-custom-component-or-endpoint.adoc |   13 -
 ...on-ip-address-from-the-camel-cxf-consumer-.adoc |   17 -
 .../en/faq/how-can-i-get-the-source-code.adoc      |   50 -
 .../faq/how-can-i-stop-a-route-from-a-route.adoc   |   70 -
 ...ults-with-stacktraces-when-using-camel-cxf.adoc |    6 -
 .../en/faq/how-do-i-become-a-committer.adoc        |   61 -
 .../en/faq/how-do-i-change-the-logging.adoc        |   20 -
 .../en/faq/how-do-i-compile-the-code.adoc          |    4 -
 .../en/faq/how-do-i-configure-endpoints.adoc       |  321 ---
 ...-endpoints-without-the-value-being-encoded.adoc |   16 -
 ...size-for-producercache-or-producertemplate.adoc |   36 -
 ...ximum-endpoint-cache-size-for-camelcontext.adoc |   42 -
 .../en/faq/how-do-i-debug-my-route.adoc            |   15 -
 docs/user-manual/en/faq/how-do-i-disable-jmx.adoc  |   30 -
 .../en/faq/how-do-i-edit-the-website.adoc          |   18 -
 .../en/faq/how-do-i-enable-debug-logging.adoc      |   33 -
 ...reams-when-debug-logging-messages-in-camel.adoc |   55 -
 ...en-consuming-for-example-from-a-ftp-server.adoc |   31 -
 ...how-do-i-import-rests-from-other-xml-files.adoc |   87 -
 ...ow-do-i-import-routes-from-other-xml-files.adoc |   44 -
 .../faq/how-do-i-invoke-camel-routes-from-jbi.adoc |   34 -
 .../en/faq/how-do-i-let-jetty-match-wildcards.adoc |   31 -
 ...ow-do-i-make-my-jms-endpoint-transactional.adoc |   31 -
 .../en/faq/how-do-i-name-my-routes.adoc            |   20 -
 .../en/faq/how-do-i-restart-camelcontext.adoc      |    9 -
 ...wn-exception-during-processing-an-exchange.adoc |   54 -
 .../how-do-i-retry-failed-messages-forever.adoc    |   19 -
 ...om-a-certain-point-back-or-an-entire-route.adoc |   92 -
 ...-contexttestsupport-class-in-my-unit-tests.adoc |   44 -
 .../how-do-i-run-activemq-and-camel-in-jboss.adoc  |   21 -
 .../how-do-i-run-camel-using-java-webstart.adoc    |   83 -
 ...chars-when-debug-logging-messages-in-camel.adoc |   54 -
 ...do-i-set-the-mep-when-interacting-with-jbi.adoc |   34 -
 ...ify-time-period-in-a-human-friendly-syntax.adoc |   55 -
 ...h-method-to-use-when-using-beans-in-routes.adoc |    9 -
 .../en/faq/how-do-i-use-a-big-uber-jar.adoc        |   11 -
 .../faq/how-do-i-use-camel-inside-servicemix.adoc  |    7 -
 .../en/faq/how-do-i-use-java-14-logging.adoc       |   20 -
 docs/user-manual/en/faq/how-do-i-use-log4j.adoc    |   47 -
 ...spring-property-placeholder-with-camel-xml.adoc |   77 -
 .../how-do-i-use-uris-with-parameters-in-xml.adoc  |   52 -
 ...om-processor-which-sends-multiple-messages.adoc |   51 -
 ...direct-event-seda-and-vm-endpoints-compare.adoc |   14 -
 ...-do-the-timer-and-quartz-endpoints-compare.adoc |    8 -
 .../en/faq/how-does-camel-compare-to-mule.adoc     |   29 -
 .../how-does-camel-compare-to-servicemix-eip.adoc  |   61 -
 .../faq/how-does-camel-compare-to-servicemix.adoc  |   43 -
 .../en/faq/how-does-camel-compare-to-synapse.adoc  |   32 -
 ...how-does-camel-look-up-beans-and-endpoints.adoc |   23 -
 .../en/faq/how-does-camel-work-with-activemq.adoc  |   21 -
 .../faq/how-does-camel-work-with-servicemix.adoc   |   25 -
 docs/user-manual/en/faq/how-does-camel-work.adoc   |    5 -
 .../en/faq/how-does-the-camel-api-compare-to.adoc  |   43 -
 .../en/faq/how-does-the-website-work.adoc          |    8 -
 ...hould-i-invoke-my-pojos-or-spring-services.adoc |   22 -
 ...kage-applications-using-camel-and-activemq.adoc |   22 -
 ...the-camel-cxf-endpoint-from-osgi-platform-.adoc |   67 -
 ...-avoid-sending-some-or-all-message-headers.adoc |   75 -
 ...e-a-static-camel-converter-method-in-scala.adoc |   19 -
 ...http-protocol-headers-in-the-camel-message.adoc |   44 -
 ...end-the-same-message-to-multiple-endpoints.adoc |   34 -
 ...-without-touching-the-spring-configuration.adoc |   88 -
 .../en/faq/how-to-use-a-dynamic-uri-in-to.adoc     |   80 -
 ...-extra-camel-componets-in-servicemix-camel.adoc |   73 -
 ...-1x-context-xml-from-apache-camel-web-site.adoc |   42 -
 ...f-i-use-servicemix-when-should-i-use-camel.adoc |   22 -
 .../Message-flow-in-Route.png                      |  Bin 13415 -> 0 bytes
 .../flow.png                                       |  Bin 6152 -> 0 bytes
 docs/user-manual/en/faq/is-camel-an-esb.adoc       |   17 -
 docs/user-manual/en/faq/is-camel-ioc-friendly.adoc |   61 -
 docs/user-manual/en/faq/is-there-an-ide.adoc       |   14 -
 ...when-adding-and-removing-routes-at-runtime.adoc |   10 -
 .../en/faq/running-camel-standalone.adoc           |   29 -
 ...-activemq-broker-or-in-another-application.adoc |   36 -
 .../en/faq/using-camel-core-testsjar.adoc          |   10 -
 .../using-getin-or-getout-methods-on-exchange.adoc |  131 --
 .../en/faq/what-are-the-dependencies.adoc          |   67 -
 docs/user-manual/en/faq/what-is-a-router.adoc      |   23 -
 docs/user-manual/en/faq/what-is-camel.adoc         |   60 -
 docs/user-manual/en/faq/what-is-the-license.adoc   |    6 -
 docs/user-manual/en/faq/what-jars-do-i-need.adoc   |   34 -
 .../en/faq/what-platforms-are-supported.adoc       |    8 -
 ...se-when-or-otherwise-in-a-java-camel-route.adoc |   98 -
 .../en/faq/why-cant-i-use-sign-in-my-password.adoc |   18 -
 ...o-many-noclassdeffoundexception-on-startup.adoc |   17 -
 ...my-message-lose-its-headers-during-routing.adoc |    4 -
 ...use-too-many-threads-with-producertemplate.adoc |   29 -
 ...-does-ftp-component-not-download-any-files.adoc |    8 -
 .../why-does-maven-not-download-dependencies.adoc  |   10 -
 ...-file-consumer-use-the-camel-error-handler.adoc |   51 -
 ...jms-route-only-consume-one-message-at-once.adoc |   21 -
 ...ge-with-error-handler-not-work-as-expected.adoc |   16 -
 .../en/faq/why-is-my-message-body-empty.adoc       |   19 -
 ...is-my-processor-not-showing-up-in-jconsole.adoc |   35 -
 ...-the-exception-null-when-i-use-onexception.adoc |   37 -
 docs/user-manual/en/faq/why-the-name-camel.adoc    |   30 -
 .../en/faq/why-use-multiple-camelcontext.adoc      |   16 -
 .../apache-spark.data/camel_spark_cluster.png      |  Bin 172359 -> 0 bytes
 .../apache-spark.data/camel_spark_driver.png       |  Bin 293927 -> 0 bytes
 .../images/apache-spark.data/fabric_docker-(2).png |  Bin 37481 -> 0 bytes
 .../images/architecture.data/camel-components.png  |  Bin 229901 -> 0 bytes
 .../images/async.data/camel_async_request_only.png |  Bin 59864 -> 0 bytes
 .../async.data/camel_async_request_reply.png       |  Bin 64513 -> 0 bytes
 .../images/async.data/camel_sync_request_only.png  |  Bin 59351 -> 0 bytes
 .../images/async.data/camel_sync_request_reply.png |  Bin 61299 -> 0 bytes
 .../en/images/barcode-data-format.data/qr-code.png |  Bin 307 -> 0 bytes
 .../camel-eclipse-m2e-import-completed.png         |  Bin 73775 -> 0 bytes
 .../building.data/camel-eclipse-m2e-import.png     |  Bin 39095 -> 0 bytes
 .../en/images/camel-core.data/architecture.png     |  Bin 7767 -> 0 bytes
 .../architecture_incl_violations.png               |  Bin 23733 -> 0 bytes
 docs/user-manual/en/images/camel-logo.png          |  Bin 22001 -> 0 bytes
 docs/user-manual/en/images/debugger.data/debug.png |  Bin 212850 -> 0 bytes
 .../en/images/direct-vm.data/camel-direct-vm.png   |  Bin 129236 -> 0 bytes
 .../download.data/camel-box-v1.0-150x200.png       |  Bin 93934 -> 0 bytes
 .../enterprise-integration-patterns.data/clear.png |  Bin 26517 -> 0 bytes
 .../en/images/lifecycle.data/service_lifecycle.png |  Bin 35951 -> 0 bytes
 docs/user-manual/en/notice.md                      |   17 -
 .../en/release-notes/camel-2170-release.adoc       |  441 ----
 .../en/release-notes/camel-2171-release.adoc       |   44 -
 .../en/release-notes/camel-2172-release.adoc       |   45 -
 .../en/release-notes/camel-2173-release.adoc       |   44 -
 .../en/release-notes/camel-2174-release.adoc       |   43 -
 .../en/release-notes/camel-2175-release.adoc       |   43 -
 .../en/release-notes/camel-2176-release.adoc       |   43 -
 .../en/release-notes/camel-2177-release.adoc       |   39 -
 .../en/release-notes/camel-2180-release.adoc       |  370 ---
 .../en/release-notes/camel-2181-release.adoc       |   43 -
 .../en/release-notes/camel-2182-release.adoc       |   45 -
 .../en/release-notes/camel-2183-release.adoc       |   43 -
 .../en/release-notes/camel-2184-release.adoc       |   39 -
 .../en/release-notes/camel-2185-release.adoc       |   39 -
 .../en/release-notes/camel-2190-release.adoc       |  317 ---
 .../en/release-notes/camel-2191-release.adoc       |   40 -
 .../en/release-notes/camel-2192-release.adoc       |   39 -
 .../en/release-notes/camel-2193-release.adoc       |   39 -
 .../en/release-notes/camel-2194-release.adoc       |   39 -
 .../en/release-notes/camel-2195-release.adoc       |   39 -
 .../en/release-notes/camel-2200-release.adoc       |  271 ---
 .../en/release-notes/camel-2201-release.adoc       |   40 -
 .../en/release-notes/camel-2202-release.adoc       |   40 -
 .../en/release-notes/camel-2203-release.adoc       |   40 -
 .../en/release-notes/camel-2204-release.adoc       |   40 -
 .../en/release-notes/camel-2210-release.adoc       |  209 --
 .../en/release-notes/camel-2211-release.adoc       |   40 -
 .../en/release-notes/camel-2212-release.adoc       |   40 -
 .../en/security-advisories/CVE-2013-4330.txt.asc   |   46 -
 .../en/security-advisories/CVE-2014-0002.txt.asc   |   46 -
 .../en/security-advisories/CVE-2014-0003.txt.asc   |   46 -
 .../en/security-advisories/CVE-2015-0263.txt.asc   |   38 -
 .../en/security-advisories/CVE-2015-0264.txt.asc   |   38 -
 .../en/security-advisories/CVE-2015-5344.txt.asc   |   52 -
 .../en/security-advisories/CVE-2015-5348.txt.asc   |   37 -
 .../en/security-advisories/CVE-2016-8749.txt.asc   |   35 -
 .../en/security-advisories/CVE-2017-12633.txt.asc  |   33 -
 .../en/security-advisories/CVE-2017-12634.txt.asc  |   33 -
 .../en/security-advisories/CVE-2017-3159.txt.asc   |   33 -
 .../en/security-advisories/CVE-2017-5643.txt.asc   |   30 -
 .../en/security-advisories/CVE-2018-8027.txt.asc   |   31 -
 .../en/security-advisories/CVE-2018-8041.txt.asc   |   32 -
 .../images/apache-spark.data/fabric_docker-(2).png |  Bin 37481 -> 0 bytes
 .../images/architecture.data/camel-components.png  |  Bin 229901 -> 0 bytes
 .../images/async.data/camel_async_request_only.png |  Bin 59864 -> 0 bytes
 .../async.data/camel_async_request_reply.png       |  Bin 64513 -> 0 bytes
 .../images/async.data/camel_sync_request_only.png  |  Bin 59351 -> 0 bytes
 .../images/async.data/camel_sync_request_reply.png |  Bin 61299 -> 0 bytes
 .../camel-eclipse-m2e-import-completed.png         |  Bin 73775 -> 0 bytes
 .../building.data/camel-eclipse-m2e-import.png     |  Bin 39095 -> 0 bytes
 .../images/images/camel-core.data/architecture.png |  Bin 7767 -> 0 bytes
 .../architecture_incl_violations.png               |  Bin 23733 -> 0 bytes
 .../ROOT/assets/images/images/camel-logo.png       |  Bin 22001 -> 0 bytes
 .../assets/images/images/debugger.data/debug.png   |  Bin 212850 -> 0 bytes
 .../images/direct-vm.data/camel-direct-vm.png      |  Bin 129236 -> 0 bytes
 .../download.data/camel-box-v1.0-150x200.png       |  Bin 93934 -> 0 bytes
 .../enterprise-integration-patterns.data/clear.png |  Bin 26517 -> 0 bytes
 .../images/lifecycle.data/service_lifecycle.png    |  Bin 35951 -> 0 bytes
 docs/user-manual/modules/ROOT/nav.adoc             |   43 -
 .../annotation-based-expression-language.adoc      |  154 --
 .../modules/ROOT/pages/architecture.adoc           |   42 -
 docs/user-manual/modules/ROOT/pages/async.adoc     |  655 ------
 .../ROOT/pages/asynchronous-routing-engine.adoc    |   69 -
 .../modules/ROOT/pages/backlog-tracer.adoc         |  115 -
 .../modules/ROOT/pages/backlogdebugger.adoc        |  107 -
 .../modules/ROOT/pages/bam-example.adoc            |  117 -
 docs/user-manual/modules/ROOT/pages/bam.adoc       |   85 -
 .../modules/ROOT/pages/batch-consumer.adoc         |   71 -
 .../modules/ROOT/pages/bean-integration.adoc       |  103 -
 docs/user-manual/modules/ROOT/pages/binding.adoc   |   90 -
 .../modules/ROOT/pages/book-getting-started.adoc   |  575 -----
 docs/user-manual/modules/ROOT/pages/books.adoc     |  238 --
 .../modules/ROOT/pages/browsable-endpoint.adoc     |   17 -
 docs/user-manual/modules/ROOT/pages/building.adoc  |  284 ---
 .../user-manual/modules/ROOT/pages/camel-boot.adoc |   37 -
 .../ROOT/pages/camel-configuration-utilities.adoc  |  647 ------
 .../user-manual/modules/ROOT/pages/camel-core.adoc |   55 -
 .../modules/ROOT/pages/camel-jar-dependencies.adoc |   55 -
 .../modules/ROOT/pages/camelcontext.adoc           |   22 -
 docs/user-manual/modules/ROOT/pages/cep.adoc       |   43 -
 .../ROOT/pages/commercial-camel-offerings.adoc     |  126 -
 docs/user-manual/modules/ROOT/pages/component.adoc |   42 -
 .../modules/ROOT/pages/componentconfiguration.adoc |   44 -
 .../modules/ROOT/pages/configuring-camel.adoc      |   75 -
 ...ing-route-startup-ordering-and-autostartup.adoc |  271 ---
 .../modules/ROOT/pages/data-format.adoc            |  177 --
 docs/user-manual/modules/ROOT/pages/debugger.adoc  |  123 -
 .../modules/ROOT/pages/defaulterrorhandler.adoc    |   66 -
 .../modules/ROOT/pages/delay-interceptor.adoc      |   87 -
 .../modules/ROOT/pages/dependency-injection.adoc   |   17 -
 .../modules/ROOT/pages/download-archives.adoc      |  127 -
 docs/user-manual/modules/ROOT/pages/download.adoc  |  127 -
 .../modules/ROOT/pages/dozer-type-conversion.adoc  |  231 --
 docs/user-manual/modules/ROOT/pages/dsl.adoc       |   44 -
 .../modules/ROOT/pages/endpoint-completer.adoc     |   27 -
 docs/user-manual/modules/ROOT/pages/endpoint.adoc  |   36 -
 .../pages/enterprise-integration-patterns.adoc     |  318 ---
 .../modules/ROOT/pages/error-handler.adoc          |  389 ----
 .../ROOT/pages/error-handling-in-camel.adoc        |  235 --
 docs/user-manual/modules/ROOT/pages/examples.adoc  |   55 -
 .../modules/ROOT/pages/exception-clause.adoc       |  766 ------
 .../modules/ROOT/pages/exchange-pattern.adoc       |   27 -
 docs/user-manual/modules/ROOT/pages/exchange.adoc  |   22 -
 .../user-manual/modules/ROOT/pages/expression.adoc |  136 --
 docs/user-manual/modules/ROOT/pages/faq.adoc       |  192 --
 .../modules/ROOT/pages/fluent-builders.adoc        |   11 -
 .../modules/ROOT/pages/getting-started.adoc        |   79 -
 .../modules/ROOT/pages/graceful-shutdown.adoc      |  471 ----
 .../user-manual/modules/ROOT/pages/groovy-dsl.adoc |  408 ----
 .../modules/ROOT/pages/guice-jms-example.adoc      |   61 -
 .../modules/ROOT/pages/guice-maven-plugin.adoc     |  160 --
 docs/user-manual/modules/ROOT/pages/guice.adoc     |  155 --
 .../modules/ROOT/pages/http-session-handling.adoc  |  152 --
 .../modules/ROOT/pages/http-session.adoc           |  151 --
 docs/user-manual/modules/ROOT/pages/index.adoc     |  610 -----
 docs/user-manual/modules/ROOT/pages/injector.adoc  |   24 -
 docs/user-manual/modules/ROOT/pages/intercept.adoc |  274 ---
 .../inversion-of-control-with-smart-defaults.adoc  |   30 -
 docs/user-manual/modules/ROOT/pages/irc-room.adoc  |   24 -
 docs/user-manual/modules/ROOT/pages/java-dsl.adoc  |  200 --
 docs/user-manual/modules/ROOT/pages/jndi.adoc      |   22 -
 docs/user-manual/modules/ROOT/pages/json.adoc      |  636 -----
 docs/user-manual/modules/ROOT/pages/karaf.adoc     |  528 -----
 docs/user-manual/modules/ROOT/pages/languages.adoc |   50 -
 docs/user-manual/modules/ROOT/pages/lifecycle.adoc |  116 -
 .../modules/ROOT/pages/mailing-lists.adoc          |   72 -
 .../modules/ROOT/pages/oncompletion.adoc           |  332 ---
 docs/user-manual/modules/ROOT/pages/predicate.adoc |  222 --
 docs/user-manual/modules/ROOT/pages/processor.adoc |   99 -
 .../modules/ROOT/pages/producertemplate.adoc       |  103 -
 docs/user-manual/modules/ROOT/pages/registry.adoc  |   20 -
 .../modules/ROOT/pages/route-builder.adoc          |   11 -
 .../modules/ROOT/pages/route-policy.adoc           |  227 --
 docs/user-manual/modules/ROOT/pages/routes.adoc    |  112 -
 .../modules/ROOT/pages/scala-dsl-eip.adoc          |  413 ----
 .../ROOT/pages/scala-dsl-getting-started.adoc      |   67 -
 .../ROOT/pages/scala-dsl-supported-languages.adoc  |   48 -
 docs/user-manual/modules/ROOT/pages/scala-dsl.adoc |   76 -
 .../modules/ROOT/pages/scripting-languages.adoc    |  175 --
 .../modules/ROOT/pages/security-advisories.adoc    |   55 -
 docs/user-manual/modules/ROOT/pages/security.adoc  |   89 -
 .../modules/ROOT/pages/servicepool.adoc            |   60 -
 .../modules/ROOT/pages/spring-testing.adoc         |  449 ----
 .../modules/ROOT/pages/spring-xml-extensions.adoc  |   33 -
 docs/user-manual/modules/ROOT/pages/spring.adoc    |  304 ---
 docs/user-manual/modules/ROOT/pages/support.adoc   |  134 --
 docs/user-manual/modules/ROOT/pages/team.adoc      |  174 --
 docs/user-manual/modules/ROOT/pages/testing.adoc   |  304 ---
 .../modules/ROOT/pages/threading-model.adoc        |  244 --
 .../ROOT/pages/transactionerrorhandler.adoc        |  178 --
 docs/user-manual/modules/ROOT/pages/transport.adoc |   39 -
 .../modules/ROOT/pages/try-catch-finally.adoc      |  132 --
 .../modules/ROOT/pages/type-converter.adoc         |  403 ----
 docs/user-manual/modules/ROOT/pages/uris.adoc      |   28 -
 .../modules/ROOT/pages/user-stories.adoc           |  342 ---
 .../pages/using-osgi-blueprint-with-camel.adoc     |   60 -
 .../ROOT/pages/using-propertyplaceholder.adoc      | 1032 ---------
 .../modules/ROOT/pages/uuidgenerator.adoc          |   80 -
 .../modules/ROOT/pages/writing-components.adoc     |  158 --
 .../modules/ROOT/pages/xml-configuration.adoc      |   25 -
 .../modules/ROOT/pages/xml-reference.adoc          | 1436 ------------
 docs/yarn.lock                                     |  613 ++++-
 742 files changed, 97973 insertions(+), 29920 deletions(-)

diff --git a/docs/.gitignore b/docs/.gitignore
index 6b79402..41e8063 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,2 +1,3 @@
 node
 node_modules
+
diff --git a/docs/component-nav.adoc.template b/docs/component-nav.adoc.template
new file mode 100644
index 0000000..169357f
--- /dev/null
+++ b/docs/component-nav.adoc.template
@@ -0,0 +1,4 @@
+<!-- generated:txt -->
+<!-- endinject -->
+<!-- inject:adoc -->
+<!-- endinject -->
diff --git a/docs/components/modules/ROOT/assets/images/apache-ignite.png b/docs/components/modules/ROOT/assets/images/apache-ignite.png
new file mode 100644
index 0000000..0f7cf4a
Binary files /dev/null and b/docs/components/modules/ROOT/assets/images/apache-ignite.png differ
diff --git a/docs/components/modules/ROOT/assets/images/camel-jmx.png b/docs/components/modules/ROOT/assets/images/camel-jmx.png
new file mode 100644
index 0000000..105af4e
Binary files /dev/null and b/docs/components/modules/ROOT/assets/images/camel-jmx.png differ
diff --git a/docs/user-manual/modules/ROOT/assets/images/images/apache-spark.data/camel_spark_cluster.png b/docs/components/modules/ROOT/assets/images/camel_spark_cluster.png
similarity index 100%
rename from docs/user-manual/modules/ROOT/assets/images/images/apache-spark.data/camel_spark_cluster.png
rename to docs/components/modules/ROOT/assets/images/camel_spark_cluster.png
diff --git a/docs/user-manual/modules/ROOT/assets/images/images/apache-spark.data/camel_spark_driver.png b/docs/components/modules/ROOT/assets/images/camel_spark_driver.png
similarity index 100%
rename from docs/user-manual/modules/ROOT/assets/images/images/apache-spark.data/camel_spark_driver.png
rename to docs/components/modules/ROOT/assets/images/camel_spark_driver.png
diff --git a/docs/components/modules/ROOT/assets/images/jconsole_trace_notifications.png b/docs/components/modules/ROOT/assets/images/jconsole_trace_notifications.png
new file mode 100644
index 0000000..efd86a2
Binary files /dev/null and b/docs/components/modules/ROOT/assets/images/jconsole_trace_notifications.png differ
diff --git a/docs/user-manual/modules/ROOT/assets/images/images/barcode-data-format.data/qr-code.png b/docs/components/modules/ROOT/assets/images/qr-code.png
similarity index 100%
rename from docs/user-manual/modules/ROOT/assets/images/images/barcode-data-format.data/qr-code.png
rename to docs/components/modules/ROOT/assets/images/qr-code.png
diff --git a/docs/components/modules/ROOT/examples/components/camel-quickfix/src/test/resources/org/apache/camel/component/quickfixj/QuickfixjSpringTest-context.xml b/docs/components/modules/ROOT/examples/components/camel-quickfix/src/test/resources/org/apache/camel/component/quickfixj/QuickfixjSpringTest-context.xml
new file mode 100644
index 0000000..577c4a3
--- /dev/null
+++ b/docs/components/modules/ROOT/examples/components/camel-quickfix/src/test/resources/org/apache/camel/component/quickfixj/QuickfixjSpringTest-context.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:camel="http://camel.apache.org/schema/spring"
+       xsi:schemaLocation="
+        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+    <!-- START SNIPPET: e1 -->
+    <!-- tag::e1[] -->
+    <!-- camel route -->
+    <camelContext id="quickfixjContext" xmlns="http://camel.apache.org/schema/spring">
+        <route>
+            <from uri="quickfix:example"/>
+            <filter>
+                <simple>${in.header.EventCategory} == 'AppMessageReceived'</simple>
+                <to uri="log:test"/>
+            </filter>
+        </route>
+        <route>
+            <from uri="vm:test"/>
+            <to uri="lazyQuickfix:example"/>
+        </route>
+    </camelContext>
+
+    <!-- quickfix component -->
+    <bean id="quickfix" class="org.apache.camel.component.quickfixj.QuickfixjComponent">
+        <property name="configurations">
+            <util:map>
+                <entry key="example" value-ref="quickfixjConfiguration"/>
+            </util:map>
+        </property>
+        <property name="messageFactory">
+            <bean class="org.apache.camel.component.quickfixj.QuickfixjSpringTest.CustomMessageFactory"/>
+        </property>
+    </bean>
+
+    <!-- lazy quickfix component -->
+    <bean id="lazyQuickfix" class="org.apache.camel.component.quickfixj.QuickfixjComponent">
+        <property name="lazyCreateEngines" value="true" />
+        <property name="configurations">
+            <util:map>
+                <entry key="example" value-ref="lazyQuickfixjConfiguration"/>
+            </util:map>
+        </property>
+        <property name="messageFactory">
+            <bean class="org.apache.camel.component.quickfixj.QuickfixjSpringTest.CustomMessageFactory"/>
+        </property>
+    </bean>
+
+    <!-- quickfix settings -->
+    <bean id="quickfixjConfiguration" class="org.apache.camel.component.quickfixj.QuickfixjConfiguration">
+        <property name="defaultSettings">
+            <util:map>
+                <entry key="SocketConnectProtocol" value="VM_PIPE"/>
+                <entry key="SocketAcceptProtocol" value="VM_PIPE"/>
+                <entry key="UseDataDictionary" value="N"/>
+            </util:map>
+        </property>
+        <property name="sessionSettings">
+            <util:map>
+                <entry key="FIX.4.2:INITIATOR->ACCEPTOR">
+                    <util:map>
+                        <entry key="ConnectionType" value="initiator"/>
+                        <entry key="SocketConnectHost" value="localhost"/>
+                        <entry key="SocketConnectPort" value="5000"/>
+                    </util:map>
+                </entry>
+                <entry key="FIX.4.2:ACCEPTOR->INITIATOR">
+                    <util:map>
+                        <entry key="ConnectionType" value="acceptor"/>
+                        <entry key="SocketAcceptPort" value="5000"/>
+                    </util:map>
+                </entry>
+            </util:map>
+        </property>
+    </bean>
+    <!-- end::e1[] -->
+    <!-- END SNIPPET: e1 -->
+
+    <!-- lazy quickfix settings -->
+    <bean id="lazyQuickfixjConfiguration" class="org.apache.camel.component.quickfixj.QuickfixjConfiguration">
+        <property name="defaultSettings">
+            <util:map>
+                <entry key="SocketConnectProtocol" value="VM_PIPE"/>
+                <entry key="SocketAcceptProtocol" value="VM_PIPE"/>
+                <entry key="UseDataDictionary" value="N"/>
+            </util:map>
+        </property>
+        <property name="sessionSettings">
+            <util:map>
+                <entry key="FIX.4.2:INITIATOR->ACCEPTOR">
+                    <util:map>
+                        <entry key="ConnectionType" value="initiator"/>
+                        <entry key="SocketConnectHost" value="localhost"/>
+                        <entry key="SocketConnectPort" value="5001"/>
+                    </util:map>
+                </entry>
+                <entry key="FIX.4.2:ACCEPTOR->INITIATOR">
+                    <util:map>
+                        <entry key="ConnectionType" value="acceptor"/>
+                        <entry key="SocketAcceptPort" value="5001"/>
+                    </util:map>
+                </entry>
+            </util:map>
+        </property>
+    </bean>
+
+</beans>
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 0f61ad5..359a68e 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -1,7 +1,11 @@
-* xref:ahc-component.adoc[AHC Component]
+// this file is auto generated and changes to it will be overwritten
+// make edits in docs/*nav.adoc.template files instead
+
 * xref:ahc-ws-component.adoc[AHC Websocket Component]
+* xref:ahc-component.adoc[AHC Component]
 * xref:amqp-component.adoc[AMQP Component]
 * xref:apns-component.adoc[APNS Component]
+* xref:as2-component.adoc[AS2 Component]
 * xref:asn1-dataformat.adoc[ASN.1 File DataFormat]
 * xref:asterisk-component.adoc[Asterisk Component]
 * xref:atmos-component.adoc[Atmos Component]
@@ -15,6 +19,7 @@
 * xref:atomix-value-component.adoc[Atomix Value Component]
 * xref:avro-component.adoc[Avro Component]
 * xref:avro-dataformat.adoc[Avro DataFormat]
+* xref:aws-xray.adoc[AWS XRay Component]
 * xref:aws-cw-component.adoc[AWS CloudWatch Component]
 * xref:aws-ddb-component.adoc[AWS DynamoDB Component]
 * xref:aws-ddbstream-component.adoc[AWS DynamoDB Streams Component]
@@ -32,7 +37,6 @@
 * xref:aws-sqs-component.adoc[AWS Simple Queue Service Component]
 * xref:aws-swf-component.adoc[AWS Simple Workflow Component]
 * xref:aws.adoc[Camel Components for Amazon Web Services]
-* xref:aws-xray.adoc[AWS XRay Component]
 * xref:azure-blob-component.adoc[Azure Storage Blob Service Component]
 * xref:azure-queue-component.adoc[Azure Storage Queue Service Component]
 * xref:azure.adoc[Camel Components for Windows Azure Services]
@@ -47,31 +51,32 @@
 * xref:blueprint.adoc[Using OSGi blueprint with Camel]
 * xref:bonita-component.adoc[Bonita Component]
 * xref:boon-dataformat.adoc[Boon DataFormat (deprecated)]
+* xref:box-component.adoc[Box Component]
 * xref:braintree-component.adoc[Braintree Component]
 * xref:cache-component.adoc[EHCache Component (deprecated)]
 * xref:caffeine-cache-component.adoc[Caffeine Cache Component]
 * xref:caffeine-loadcache-component.adoc[Caffeine LoadCache Component]
 * xref:cql-component.adoc[Cassandra CQL Component]
-* xref:cdi.adoc[Camel CDI]
 * xref:castor-dataformat.adoc[Castor DataFormat (deprecated)]
+* xref:cdi.adoc[Camel CDI]
 * xref:chronicle-engine-component.adoc[Chronicle Engine Component (deprecated)]
 * xref:chunk-component.adoc[Chunk Component]
-* xref:coap-component.adoc[CoAP Component]
 * xref:cmis-component.adoc[CMIS Component]
+* xref:coap-component.adoc[CoAP Component]
 * xref:cometd-component.adoc[CometD Component]
 * xref:consul-component.adoc[Consul Component]
 * xref:context-component.adoc[Camel Context Component (deprecated)]
 * xref:corda-component.adoc[corda Component]
 * xref:couchbase-component.adoc[Couchbase Component]
 * xref:couchdb-component.adoc[CouchDB Component]
+* xref:crypto-cms-component.adoc[Crypto CMS Component]
 * xref:crypto-component.adoc[Crypto (JCE) Component]
 * xref:crypto-dataformat.adoc[Crypto (Java Cryptographic Extension) DataFormat]
 * xref:pgp-dataformat.adoc[PGP DataFormat]
-* xref:crypto-cms-component.adoc[Crypto CMS Component]
 * xref:csv-dataformat.adoc[CSV DataFormat]
+* xref:cxf-transport.adoc[CXF Transport Component]
 * xref:cxf-component.adoc[CXF Component]
 * xref:cxfrs-component.adoc[CXF-RS Component]
-* xref:cxf-transport.adoc[What's the Camel Transport for CXF]
 * xref:digitalocean-component.adoc[DigitalOcean Component]
 * xref:disruptor-component.adoc[Disruptor Component]
 * xref:dns-component.adoc[DNS Component]
@@ -82,8 +87,8 @@
 * xref:eclipse.adoc[Eclipse Component]
 * xref:ehcache-component.adoc[Ehcache Component]
 * xref:ejb-component.adoc[EJB Component (deprecated)]
-* xref:elasticsearch-component.adoc[Elasticsearch Component (deprecated)]
 * xref:elasticsearch-rest-component.adoc[Elastichsearch Rest Component]
+* xref:elasticsearch-component.adoc[Elasticsearch Component (deprecated)]
 * xref:elasticsearch5-component.adoc[Elasticsearch5 Component (deprecated)]
 * xref:elsql-component.adoc[ElSQL Component]
 * xref:etcd-component.adoc[etcd Component]
@@ -91,10 +96,13 @@
 * xref:exec-component.adoc[Exec Component]
 * xref:facebook-component.adoc[Facebook Component]
 * xref:json-fastjson-dataformat.adoc[JSon Fastjson DataFormat]
+* xref:fhir-component.adoc[FHIR Component]
+* xref:fhirJson-dataformat.adoc[FHIR JSon DataFormat]
+* xref:fhirXml-dataformat.adoc[FHIR XML DataFormat]
 * xref:flatpack-component.adoc[Flatpack Component]
 * xref:flatpack-dataformat.adoc[Flatpack DataFormat]
-* xref:fop-component.adoc[FOP Component]
 * xref:flink-component.adoc[Apache Flink Component]
+* xref:fop-component.adoc[FOP Component]
 * xref:freemarker-component.adoc[Freemarker Component]
 * xref:ftp-component.adoc[FTP Component]
 * xref:ftps-component.adoc[FTPS Component]
@@ -115,8 +123,8 @@
 * xref:google-sheets-stream-component.adoc[Google Sheets Stream Component]
 * xref:gora-component.adoc[Gora Component]
 * xref:grape-component.adoc[Grape Component]
-* xref:groovy-language.adoc[Groovy Language]
 * xref:groovy-dsl.adoc[About the Groovy DSL (deprecated)]
+* xref:groovy-language.adoc[Groovy Language]
 * xref:grpc-component.adoc[gRPC Component]
 * xref:json-gson-dataformat.adoc[JSon GSon DataFormat]
 * xref:guava-eventbus-component.adoc[Guava EventBus Component]
@@ -174,8 +182,8 @@
 * xref:jcr-component.adoc[JCR Component]
 * xref:jdbc-component.adoc[JDBC Component]
 * xref:jetty-component.adoc[Jetty 9 Component]
-* xref:jgroups-component.adoc[JGroups Component]
 * xref:jgroups-raft-component.adoc[JGroups raft Component]
+* xref:jgroups-component.adoc[JGroups Component]
 * xref:jibx-dataformat.adoc[JiBX DataFormat]
 * xref:jing-component.adoc[Jing Component]
 * xref:jira-component.adoc[JIRA Component (deprecated)]
@@ -216,6 +224,7 @@
 * xref:ldap-component.adoc[LDAP Component]
 * xref:ldif-component.adoc[LDIF Component]
 * xref:leveldb.adoc[LevelDB]
+* xref:linkedin-component.adoc[Linkedin Component]
 * xref:lra.adoc[LRA Component]
 * xref:lucene-component.adoc[Lucene Component]
 * xref:lumberjack-component.adoc[Lumberjack Component]
@@ -230,8 +239,8 @@
 * xref:mina-component.adoc[Mina Component (deprecated)]
 * xref:mina2-component.adoc[Mina2 Component]
 * xref:mllp-component.adoc[MLLP Component]
-* xref:mongodb-component.adoc[MongoDB Component (deprecated)]
 * xref:mongodb-gridfs-component.adoc[MongoDB GridFS Component]
+* xref:mongodb-component.adoc[MongoDB Component (deprecated)]
 * xref:mongodb3-component.adoc[MongoDB Component]
 * xref:mqtt-component.adoc[MQTT Component]
 * xref:msv-component.adoc[MSV Component]
@@ -242,12 +251,14 @@
 * xref:mybatis-component.adoc[MyBatis Component]
 * xref:nagios-component.adoc[Nagios Component]
 * xref:nats-component.adoc[Nats Component]
-* xref:netty-component.adoc[Netty Component (deprecated)]
 * xref:netty-http-component.adoc[Netty HTTP Component (deprecated)]
-* xref:netty4-component.adoc[Netty4 Component]
+* xref:netty-component.adoc[Netty Component (deprecated)]
 * xref:netty4-http-component.adoc[Netty4 HTTP Component]
+* xref:netty4-component.adoc[Netty4 Component]
 * xref:nsq-component.adoc[NSQ Component]
 * xref:ognl-language.adoc[OGNL Language]
+* xref:olingo2-component.adoc[Olingo2 Component]
+* xref:olingo4-component.adoc[Olingo4 Component]
 * xref:openshift-component.adoc[OpenShift Component (deprecated)]
 * xref:openstack-cinder-component.adoc[OpenStack Cinder Component]
 * xref:openstack-glance-component.adoc[OpenStack Glance Component]
@@ -282,6 +293,7 @@
 * xref:ruby.adoc['admin'").to("seda:adminQueue")]
 * xref:rx.adoc[Camel RX (deprecated)]
 * xref:rxjava2.adoc[RxJava2 Component]
+* xref:salesforce-component.adoc[Salesforce Component]
 * xref:sap-netweaver-component.adoc[SAP NetWeaver Component]
 * xref:xquery-component.adoc[XQuery Component]
 * xref:xquery-language.adoc[XQuery Language]
@@ -297,6 +309,7 @@
 * xref:ruby-language.adoc[Ruby Language (deprecated)]
 * xref:script.adoc[Script]
 * xref:service-component.adoc[Service Component]
+* xref:servicenow-component.adoc[ServiceNow Component]
 * xref:servlet-component.adoc[Servlet Component]
 * xref:servletlistener.adoc[ServletListener Component]
 * xref:shiro.adoc[Shiro Security Component]
@@ -310,24 +323,24 @@
 * xref:snmp-component.adoc[SNMP Component]
 * xref:soapjaxb-dataformat.adoc[SOAP DataFormat]
 * xref:solr-component.adoc[Solr Component]
-* xref:spark-component.adoc[Apache Spark Component]
 * xref:spark-rest-component.adoc[Spark Rest Component]
+* xref:spark-component.adoc[Apache Spark Component]
 * xref:splunk-component.adoc[Splunk Component]
-* xref:spel-language.adoc[SpEL Language]
-* xref:spring-event-component.adoc[Spring Event Component]
-* xref:spring.adoc[Spring Support]
 * xref:spring-batch-component.adoc[Spring Batch Component]
 * xref:spring-boot.adoc[Spring Boot]
-* xref:spring-cloud.adoc[Spring Cloud]
 * xref:spring-cloud-consul.adoc[Spring Cloud Consul]
 * xref:spring-cloud-netflix.adoc[Spring Cloud Netflix]
 * xref:spring-cloud-zookeeper.adoc[Spring Cloud Zookeeper]
+* xref:spring-cloud.adoc[Spring Cloud]
 * xref:spring-integration-component.adoc[Spring Integration Component]
 * xref:spring-javaconfig.adoc[Spring Java Config]
 * xref:spring-ldap-component.adoc[Spring LDAP Component]
 * xref:spring-redis-component.adoc[Spring Redis Component]
 * xref:spring-security.adoc[Spring Security]
 * xref:spring-ws-component.adoc[Spring WebService Component]
+* xref:spel-language.adoc[SpEL Language]
+* xref:spring-event-component.adoc[Spring Event Component]
+* xref:spring.adoc[Spring Support]
 * xref:sql-component.adoc[SQL Component]
 * xref:sql-stored-component.adoc[SQL Stored Procedure Component]
 * xref:ssh-component.adoc[SSH Component]
@@ -335,19 +348,19 @@
 * xref:stomp-component.adoc[Stomp Component]
 * xref:stream-component.adoc[Stream Component]
 * xref:string-template-component.adoc[String Template Component]
-* xref:swagger.adoc[Swagger Scala Component (deprecated)]
 * xref:swagger-java.adoc[Swagger Java Component]
+* xref:swagger.adoc[Swagger Scala Component (deprecated)]
 * xref:syslog-dataformat.adoc[Syslog DataFormat]
 * xref:tidyMarkup-dataformat.adoc[TidyMarkup DataFormat]
 * xref:tarfile-dataformat.adoc[Tar File DataFormat]
 * xref:telegram-component.adoc[Telegram Component]
-* xref:test.adoc[Test Component]
 * xref:test-blueprint.adoc[Blueprint Testing]
 * xref:test-cdi.adoc[CDI Testing]
 * xref:test-karaf.adoc[Test Karaf]
 * xref:test-spring.adoc[Test Spring]
-* xref:testcontainers.adoc[Testcontainers]
+* xref:test.adoc[Test Module]
 * xref:testcontainers-spring.adoc[Testcontainers Spring]
+* xref:testcontainers.adoc[Testcontainers]
 * xref:testng.adoc[TestNG (deprecated)]
 * xref:thrift-component.adoc[Thrift Component]
 * xref:thrift-dataformat.adoc[Thrift DataFormat]
@@ -368,8 +381,8 @@
 * xref:vertx-component.adoc[Vert.x Component]
 * xref:weather-component.adoc[Weather Component]
 * xref:web3j-component.adoc[Web3j Ethereum Blockchain Component]
-* xref:websocket-component.adoc[Jetty Websocket Component]
 * xref:websocket-jsr356-component.adoc[Javax Websocket Component]
+* xref:websocket-component.adoc[Jetty Websocket Component]
 * xref:wordpress-component.adoc[Wordpress Component]
 * xref:xchange-component.adoc[XChange Component]
 * xref:xmlBeans-dataformat.adoc[XML Beans DataFormat (deprecated)]
@@ -384,5 +397,5 @@
 * xref:zendesk-component.adoc[Zendesk Component]
 * xref:zipfile-dataformat.adoc[Zip File DataFormat]
 * xref:zipkin.adoc[Zipkin Component]
-* xref:zookeeper-component.adoc[ZooKeeper Component]
 * xref:zookeeper-master-component.adoc[ZooKeeper Master Component]
+* xref:zookeeper-component.adoc[ZooKeeper Component]
diff --git a/docs/components/modules/ROOT/pages/ahc-component.adoc b/docs/components/modules/ROOT/pages/ahc-component.adoc
deleted file mode 120000
index da4c38f..0000000
--- a/docs/components/modules/ROOT/pages/ahc-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-ahc/src/main/docs/ahc-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/ahc-component.adoc b/docs/components/modules/ROOT/pages/ahc-component.adoc
new file mode 100644
index 0000000..ad7f5a6
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/ahc-component.adoc
@@ -0,0 +1,452 @@
+= AHC Component
+
+*Available as of Camel version 2.8*
+
+
+The AHC component provides HTTP based endpoints
+for consuming external HTTP resources (as a client to call external
+servers using HTTP).
+The component uses the
+https://github.com/AsyncHttpClient/async-http-client[Async Http Client]
+library.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-ahc</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== URI format
+
+[source,java]
+---------------------------------------------------
+ahc:http://hostname[:port][/resourceUri][?options]
+ahc:https://hostname[:port][/resourceUri][?options]
+---------------------------------------------------
+
+Will by default use port 80 for HTTP and 443 for HTTPS.
+
+You can append query options to the URI in the following format,
+`?option=value&option=value&...`
+
+== Ahc Endpoint Options
+
+
+
+
+
+
+
+// endpoint options: START
+The AHC endpoint is configured using URI syntax:
+
+----
+ahc:httpUri
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *httpUri* | *Required* The URI to use such as http://hostname:port/path |  | URI
+|===
+
+
+==== Query Parameters (13 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *bridgeEndpoint* (producer) | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | boolean
+| *bufferSize* (producer) | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | int
+| *connectionClose* (producer) | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | boolean
+| *cookieHandler* (producer) | Configure a cookie handler to maintain a HTTP session |  | CookieHandler
+| *headerFilterStrategy* (producer) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *throwExceptionOnFailure* (producer) | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | boolean
+| *transferException* (producer) | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enab [...]
+| *binding* (advanced) | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. |  | AhcBinding
+| *clientConfig* (advanced) | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. |  | AsyncHttpClientConfig
+| *clientConfigOptions* (advanced) | To configure the AsyncHttpClientConfig using the key/values from the Map. |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *clientConfigRealmOptions* (security) | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. |  | Map
+| *sslContextParameters* (security) | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.ahc.allow-java-serialized-object* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | Boolean
+| *camel.component.ahc.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. The option is a org.apache.camel.component.ahc.AhcBinding type. |  | String
+| *camel.component.ahc.client* | To use a custom AsyncHttpClient. The option is a org.asynchttpclient.AsyncHttpClient type. |  | String
+| *camel.component.ahc.client-config* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. The option is a org.asynchttpclient.AsyncHttpClientConfig type. |  | String
+| *camel.component.ahc.enabled* | Enable ahc component | true | Boolean
+| *camel.component.ahc.header-filter-strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type. |  | String
+| *camel.component.ahc.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.ahc.ssl-context-parameters* | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. The option is a org.apache.camel.util.jsse.SSLContextParameters type. |  | String
+| *camel.component.ahc.use-global-ssl-context-parameters* | Enable usage of global SSL context parameters. | false | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+
+
+
+
+== AhcComponent Options
+
+
+
+
+
+
+
+
+
+// component options: START
+The AHC component supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *client* (advanced) | To use a custom AsyncHttpClient |  | AsyncHttpClient
+| *binding* (advanced) | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. |  | AhcBinding
+| *clientConfig* (advanced) | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. |  | AsyncHttpClientConfig
+| *sslContextParameters* (security) | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
+| *allowJavaSerialized Object* (advanced) | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | boolean
+| *useGlobalSslContext Parameters* (security) | Enable usage of global SSL context parameters. | false | boolean
+| *headerFilterStrategy* (filter) | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+
+
+
+Notice that setting any of the options on the `AhcComponent` will
+propagate those options to
+`AhcEndpoints` being created. However the `AhcEndpoint` can also
+configure/override a custom option. Options set on endpoints will always
+take precedence over options from the `AhcComponent`.
+
+== Message Headers
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Name |Type |Description
+|`Exchange.HTTP_URI` |`String` |URI to call. Will override existing URI set directly on the endpoint.
+
+|`Exchange.HTTP_PATH` |`String` |Request URI's path, the header will be used to build the request URI
+with the HTTP_URI. If the path is start with "/", http producer will try
+to find the relative path based on the Exchange.HTTP_BASE_URI header or
+the `exchange.getFromEndpoint().getEndpointUri();`
+
+|`Exchange.HTTP_QUERY` |`String` |*Camel 2.11 onwards:* URI parameters. Will override existing URI
+parameters set directly on the endpoint.
+
+|`Exchange.HTTP_RESPONSE_CODE` |`int` |The HTTP response code from the external server. Is 200 for OK.
+
+|`Exchange.HTTP_CHARACTER_ENCODING` |`String` |Character encoding.
+
+|`Exchange.CONTENT_TYPE` |`String` |The HTTP content type. Is set on both the IN and OUT message to provide
+a content type, such as `text/html`.
+
+|`Exchange.CONTENT_ENCODING` |`String` |The HTTP content encoding. Is set on both the IN and OUT message to
+provide a content encoding, such as `gzip`.
+|=======================================================================
+
+== Message Body
+
+Camel will store the HTTP response from the external server on the OUT
+body. All headers from the IN message will be copied to the OUT message,
+so headers are preserved during routing. Additionally Camel will add the
+HTTP response headers as well to the OUT message headers.
+
+== Response code
+
+Camel will handle according to the HTTP response code:
+
+* Response code is in the range 100..299, Camel regards it as a success
+response.
+* Response code is in the range 300..399, Camel regards it as a
+redirection response and will throw a `AhcOperationFailedException` with
+the information.
+* Response code is 400+, Camel regards it as an external server failure
+and will throw a `AhcOperationFailedException` with the information.
++
+throwExceptionOnFailure
++
+The option, `throwExceptionOnFailure`, can be set to `false` to prevent
+the `AhcOperationFailedException` from being thrown for failed response
+codes. This allows you to get any response from the remote server.
+
+== AhcOperationFailedException
+
+This exception contains the following information:
+
+* The HTTP status code
+* The HTTP status line (text of the status code)
+* Redirect location, if server returned a redirect
+* Response body as a `java.lang.String`, if server provided a body as
+response
+
+== Calling using GET or POST
+
+The following algorithm is used to determine if either `GET` or `POST`
+HTTP method should be used: +
+ 1. Use method provided in header. +
+ 2. `GET` if query string is provided in header. +
+ 3. `GET` if endpoint is configured with a query string. +
+ 4. `POST` if there is data to send (body is not null). +
+ 5. `GET` otherwise.
+
+== Configuring URI to call
+
+You can set the HTTP producer's URI directly form the endpoint URI. In
+the route below, Camel will call out to the external server, `oldhost`,
+using HTTP.
+
+[source,java]
+----------------------------------
+from("direct:start")
+        .to("ahc:http://oldhost");
+----------------------------------
+
+And the equivalent Spring sample:
+
+[source,xml]
+---------------------------------------------------------------------
+<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
+  <route>
+    <from uri="direct:start"/>
+    <to uri="ahc:http://oldhost"/>
+  </route>
+</camelContext>
+---------------------------------------------------------------------
+
+You can override the HTTP endpoint URI by adding a header with the key,
+`Exchange.HTTP_URI`, on the message.
+
+[source,java]
+-------------------------------------------------------------
+from("direct:start")
+    .setHeader(Exchange.HTTP_URI, constant("http://newhost"))
+    .to("ahc:http://oldhost");
+-------------------------------------------------------------
+
+== Configuring URI Parameters
+
+The *ahc* producer supports URI parameters to be sent to the HTTP
+server. The URI parameters can either be set directly on the endpoint
+URI or as a header with the key `Exchange.HTTP_QUERY` on the message.
+
+[source,java]
+---------------------------------------------------------
+from("direct:start")
+        .to("ahc:http://oldhost?order=123&detail=short");
+---------------------------------------------------------
+
+Or options provided in a header:
+
+[source,java]
+-------------------------------------------------------------------------------
+from("direct:start")
+            .setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
+        .to("ahc:http://oldhost");
+-------------------------------------------------------------------------------
+
+== How to set the http method to the HTTP producer
+
+The HTTP component provides a way to set the HTTP request method by
+setting the message header. Here is an example;
+
+[source,java]
+--------------------------------------------------------------
+from("direct:start")
+            .setHeader(Exchange.HTTP_METHOD, constant("POST"))
+        .to("ahc:http://www.google.com")
+            .to("mock:results");
+--------------------------------------------------------------
+
+And the equivalent Spring sample:
+
+[source,xml]
+---------------------------------------------------------------------
+<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
+  <route>
+    <from uri="direct:start"/>
+    <setHeader name="CamelHttpMethod">
+        <constant>POST</constant>
+    </setHeader>
+    <to uri="ahc:http://www.google.com"/>
+    <to uri="mock:results"/>
+  </route>
+</camelContext>
+---------------------------------------------------------------------
+
+== Configuring charset
+
+If you are using `POST` to send data you can configure the `charset`
+using the `Exchange` property:
+
+[source,java]
+----------------------------------------------------------
+exchange.setProperty(Exchange.CHARSET_NAME, "iso-8859-1");
+----------------------------------------------------------
+
+=== URI Parameters from the endpoint URI
+
+In this sample we have the complete URI endpoint that is just what you
+would have typed in a web browser. Multiple URI parameters can of course
+be set using the `&` character as separator, just as you would in the
+web browser. Camel does no tricks here.
+
+[source,java]
+--------------------------------------------------------------------
+// we query for Camel at the Google page
+template.sendBody("ahc:http://www.google.com/search?q=Camel", null);
+--------------------------------------------------------------------
+
+=== URI Parameters from the Message
+
+[source,java]
+---------------------------------------------------------------------
+Map headers = new HashMap();
+headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en");
+// we query for Camel and English language at Google
+template.sendBody("ahc:http://www.google.com/search", null, headers);
+---------------------------------------------------------------------
+
+In the header value above notice that it should *not* be prefixed with
+`?` and you can separate parameters as usual with the `&` char.
+
+=== Getting the Response Code
+
+You can get the HTTP response code from the AHC component by getting the
+value from the Out message header with `Exchange.HTTP_RESPONSE_CODE`.
+
+[source,java]
+----------------------------------------------------------------------------------------------
+Exchange exchange = template.send("ahc:http://www.google.com/search", new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(Exchange.HTTP_QUERY, constant("hl=en&q=activemq"));
+            }
+   });
+   Message out = exchange.getOut();
+   int responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
+----------------------------------------------------------------------------------------------
+
+== Configuring AsyncHttpClient
+
+The `AsyncHttpClient` client uses a `AsyncHttpClientConfig` to configure
+the client. See the documentation at +
+ http://github.com/sonatype/async-http-client[Async Http Client] for
+more details.
+
+The example below shows how to use a builder to create the
+`AsyncHttpClientConfig` which we configure on the `AhcComponent`.
+
+The `AsyncHttpClientConfigBean` class provides getters and setters for
+the configuration options available in `AsyncHttpClientConfig`. An
+instance of `AsyncHttpClientConfigBean` may be passed directly to the
+AHC component or referenced in an endpoint URI using the `clientConfig`
+URI parameter.
+
+There is the ability to set configuration
+options directly in the URI. URI parameters starting with
+"clientConfig." can be used to set the various configurable properties
+of `AsyncHttpClientConfig`. The properties specified in the endpoint URI
+are merged with those specified in the configuration referenced by the
+"clientConfig" URI parameter with those being set using the
+"clientConfig." parameter taking priority. The `AsyncHttpClientConfig`
+instance referenced is always copied for each endpoint such that
+settings on one endpoint will remain independent of settings on any
+previously created endpoints. The example below shows how to configure
+the AHC component using the "clientConfig." type URI parameters.
+
+[source,java]
+---------------------------------------------------------------------------------------------------------
+from("direct:start")
+    .to("ahc:http://localhost:8080/foo?clientConfig.maxRequestRetry=3&clientConfig.followRedirects=true")
+---------------------------------------------------------------------------------------------------------
+
+== SSL Support (HTTPS)
+
+[[AHC-UsingtheJSSEConfigurationUtility]]
+Using the JSSE Configuration Utility
+
+The AHC component supports SSL/TLS configuration
+through the xref:manual::camel-configuration-utilities.adoc[Camel JSSE
+Configuration Utility].  This utility greatly decreases the amount of
+component specific code you need to write and is configurable at the
+endpoint and component levels.  The following examples demonstrate how
+to use the utility with the AHC component.
+
+[[AHC-Programmaticconfigurationofthecomponent]]
+Programmatic configuration of the component
+
+[source,java]
+-------------------------------------------------------------------------
+KeyStoreParameters ksp = new KeyStoreParameters();
+ksp.setResource("/users/home/server/keystore.jks");
+ksp.setPassword("keystorePassword");
+
+KeyManagersParameters kmp = new KeyManagersParameters();
+kmp.setKeyStore(ksp);
+kmp.setKeyPassword("keyPassword");
+
+SSLContextParameters scp = new SSLContextParameters();
+scp.setKeyManagers(kmp);
+
+AhcComponent component = context.getComponent("ahc", AhcComponent.class);
+component.setSslContextParameters(scp));
+-------------------------------------------------------------------------
+
+[[AHC-SpringDSLbasedconfigurationofendpoint]]
+Spring DSL based configuration of endpoint
+
+[source,xml]
+----------------------------------------------------------------------------------
+...
+  <camel:sslContextParameters
+      id="sslContextParameters">
+    <camel:keyManagers
+        keyPassword="keyPassword">
+      <camel:keyStore
+          resource="/users/home/server/keystore.jks"
+          password="keystorePassword"/>
+    </camel:keyManagers>
+  </camel:sslContextParameters>...
+...
+  <to uri="ahc:https://localhost/foo?sslContextParameters=#sslContextParameters"/>
+...
+----------------------------------------------------------------------------------
diff --git a/docs/components/modules/ROOT/pages/ahc-ws-component.adoc b/docs/components/modules/ROOT/pages/ahc-ws-component.adoc
deleted file mode 120000
index 0874e84..0000000
--- a/docs/components/modules/ROOT/pages/ahc-ws-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-ahc-ws/src/main/docs/ahc-ws-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/ahc-ws-component.adoc b/docs/components/modules/ROOT/pages/ahc-ws-component.adoc
new file mode 100644
index 0000000..e017eca
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/ahc-ws-component.adoc
@@ -0,0 +1,187 @@
+= AHC Websocket Component
+
+*Available as of Camel version 2.14*
+
+
+The AHC-WS component provides Websocket
+based endpoints for a client communicating with
+external servers over Websocket (as a client opening a websocket
+connection to an external server). +
+The component uses the xref:ahc-component.adoc[AHC] component that in turn uses
+the 
+https://github.com/AsyncHttpClient/async-http-client[Async Http Client] 
+library.
+
+Maven users will need to add the following dependency to
+their `pom.xml` for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-ahc-ws</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== URI Format
+
+[source,java]
+-------------------------------------------------
+ahc-ws://hostname[:port][/resourceUri][?options]
+ahc-wss://hostname[:port][/resourceUri][?options]
+-------------------------------------------------
+
+Will by default use port 80 for ahc-ws and 443 for ahc-wss.
+
+== AHC-WS Options
+
+As the AHC-WS component is based on the AHC component, you can use the
+various configuration options of the AHC component.
+
+
+
+// component options: START
+The AHC Websocket component supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *client* (advanced) | To use a custom AsyncHttpClient |  | AsyncHttpClient
+| *binding* (advanced) | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. |  | AhcBinding
+| *clientConfig* (advanced) | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. |  | AsyncHttpClientConfig
+| *sslContextParameters* (security) | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
+| *allowJavaSerialized Object* (advanced) | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | boolean
+| *useGlobalSslContext Parameters* (security) | Enable usage of global SSL context parameters. | false | boolean
+| *headerFilterStrategy* (filter) | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AHC Websocket endpoint is configured using URI syntax:
+
+----
+ahc-ws:httpUri
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *httpUri* | *Required* The URI to use such as http://hostname:port/path |  | URI
+|===
+
+
+==== Query Parameters (18 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *bridgeEndpoint* (common) | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | boolean
+| *bufferSize* (common) | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | int
+| *headerFilterStrategy* (common) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *throwExceptionOnFailure* (common) | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | boolean
+| *transferException* (common) | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable [...]
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *sendMessageOnError* (consumer) | Whether to send an message if the web-socket listener received an error. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *connectionClose* (producer) | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | boolean
+| *cookieHandler* (producer) | Configure a cookie handler to maintain a HTTP session |  | CookieHandler
+| *useStreaming* (producer) | To enable streaming to send data as multiple text fragments. | false | boolean
+| *binding* (advanced) | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. |  | AhcBinding
+| *clientConfig* (advanced) | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. |  | AsyncHttpClientConfig
+| *clientConfigOptions* (advanced) | To configure the AsyncHttpClientConfig using the key/values from the Map. |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *clientConfigRealmOptions* (security) | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. |  | Map
+| *sslContextParameters* (security) | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.ahc-ws.allow-java-serialized-object* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | Boolean
+| *camel.component.ahc-ws.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. The option is a org.apache.camel.component.ahc.AhcBinding type. |  | String
+| *camel.component.ahc-ws.client* | To use a custom AsyncHttpClient. The option is a org.asynchttpclient.AsyncHttpClient type. |  | String
+| *camel.component.ahc-ws.client-config* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. The option is a org.asynchttpclient.AsyncHttpClientConfig type. |  | String
+| *camel.component.ahc-ws.enabled* | Enable ahc-ws component | true | Boolean
+| *camel.component.ahc-ws.header-filter-strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type. |  | String
+| *camel.component.ahc-ws.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.ahc-ws.ssl-context-parameters* | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. The option is a org.apache.camel.util.jsse.SSLContextParameters type. |  | String
+| *camel.component.ahc-ws.use-global-ssl-context-parameters* | Enable usage of global SSL context parameters. | false | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+== Writing and Reading Data over Websocket
+
+An ahc-ws endpoint can either write data to the socket or read from the
+socket, depending on whether the endpoint is configured as the producer
+or the consumer, respectively.
+
+== Configuring URI to Write or Read Data
+
+In the route below, Camel will write to the specified websocket
+connection.
+
+[source,java]
+-----------------------------------
+from("direct:start")
+        .to("ahc-ws://targethost");
+-----------------------------------
+
+And the equivalent Spring sample:
+
+[source,xml]
+------------------------------------------------------------
+<camelContext xmlns="http://camel.apache.org/schema/spring">
+  <route>
+    <from uri="direct:start"/>
+    <to uri="ahc-ws://targethost"/>
+  </route>
+</camelContext>
+------------------------------------------------------------
+
+In the route below, Camel will read from the specified websocket
+connection.
+
+[source,java]
+---------------------------
+from("ahc-ws://targethost")
+        .to("direct:next");
+---------------------------
+
+And the equivalent Spring sample:
+
+[source,xml]
+------------------------------------------------------------
+<camelContext xmlns="http://camel.apache.org/schema/spring">
+  <route>
+    <from uri="ahc-ws://targethost"/>
+    <to uri="direct:next"/>
+  </route>
+</camelContext>
+------------------------------------------------------------
+
+ 
diff --git a/docs/components/modules/ROOT/pages/amqp-component.adoc b/docs/components/modules/ROOT/pages/amqp-component.adoc
deleted file mode 120000
index 68e2a4f..0000000
--- a/docs/components/modules/ROOT/pages/amqp-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-amqp/src/main/docs/amqp-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/amqp-component.adoc b/docs/components/modules/ROOT/pages/amqp-component.adoc
new file mode 100644
index 0000000..989e86b
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/amqp-component.adoc
@@ -0,0 +1,466 @@
+= AMQP Component
+
+*Available as of Camel version 1.2*
+
+
+The AMQP component supports the
+http://www.amqp.org/[AMQP 1.0 protocol]
+using the JMS Client API of the http://qpid.apache.org/[Qpid]
+project.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-amqp</artifactId>
+    <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI format
+
+[source,java]
+----
+amqp:[queue:|topic:]destinationName[?options]
+----
+
+== AMQP Options
+
+You can specify all of the various configuration options of the
+xref:jms-component.adoc[JMS] component after the destination name.
+
+
+
+
+// component options: START
+The AMQP component supports 80 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | To use a shared JMS configuration |  | JmsConfiguration
+| *acceptMessagesWhile Stopping* (consumer) | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on t [...]
+| *allowReplyManagerQuick Stop* (consumer) | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false  [...]
+| *acknowledgementMode* (consumer) | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode.For the regular modes, it is preferable to use the acknowledgementModeName instead. |  | int
+| *eagerLoadingOf Properties* (consumer) | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties | false | boolean
+| *acknowledgementModeName* (consumer) | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | String
+| *autoStartup* (consumer) | Specifies whether the consumer container should auto-startup. | true | boolean
+| *cacheLevel* (consumer) | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. |  | int
+| *cacheLevelName* (consumer) | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. | CACHE_AUTO | String
+| *replyToCacheLevelName* (producer) | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE [...]
+| *clientId* (common) | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. |  | String
+| *concurrentConsumers* (consumer) | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | int
+| *replyToConcurrent Consumers* (producer) | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | int
+| *connectionFactory* (common) | The connection factory to be use. A connection factory must be configured either on the component or endpoint. |  | ConnectionFactory
+| *username* (security) | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. |  | String
+| *password* (security) | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. |  | String
+| *deliveryPersistent* (producer) | Specifies whether persistent delivery is used by default. | true | boolean
+| *deliveryMode* (producer) | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. |  | Integer
+| *durableSubscriptionName* (common) | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. |  | String
+| *exceptionListener* (advanced) | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. |  | ExceptionListener
+| *errorHandler* (advanced) | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. [...]
+| *errorHandlerLogging Level* (logging) | Allows to configure the default errorHandler logging level for logging uncaught exceptions. | WARN | LoggingLevel
+| *errorHandlerLogStack Trace* (logging) | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | boolean
+| *explicitQosEnabled* (producer) | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | boolean
+| *exposeListenerSession* (consumer) | Specifies whether the listener session should be exposed when consuming messages. | false | boolean
+| *idleTaskExecutionLimit* (advanced) | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | int
+| *idleConsumerLimit* (advanced) | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | int
+| *maxConcurrentConsumers* (consumer) | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. |  | int
+| *replyToMaxConcurrent Consumers* (producer) | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. |  | int
+| *replyOnTimeoutToMax ConcurrentConsumers* (producer) | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | int
+| *maxMessagesPerTask* (advanced) | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | int
+| *messageConverter* (advanced) | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. |  | MessageConverter
+| *mapJmsMessage* (advanced) | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | boolean
+| *messageIdEnabled* (advanced) | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker.If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value | true | boolean
+| *messageTimestampEnabled* (advanced) | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker.If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value | true | boolean
+| *alwaysCopyMessage* (producer) | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | boolean
+| *useMessageIDAs CorrelationID* (advanced) | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | boolean
+| *priority* (producer) | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. | 4 | int
+| *pubSubNoLocal* (advanced) | Specifies whether to inhibit the delivery of messages published by its own connection. | false | boolean
+| *receiveTimeout* (advanced) | The timeout for receiving messages (in milliseconds). | 1000 | long
+| *recoveryInterval* (advanced) | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | long
+| *taskExecutor* (consumer) | Allows you to specify a custom task executor for consuming messages. |  | TaskExecutor
+| *timeToLive* (producer) | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1 | long
+| *transacted* (transaction) | Specifies whether to use transacted mode | false | boolean
+| *lazyCreateTransaction Manager* (transaction) | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | boolean
+| *transactionManager* (transaction) | The Spring transaction manager to use. |  | PlatformTransaction Manager
+| *transactionName* (transaction) | The name of the transaction to use. |  | String
+| *transactionTimeout* (transaction) | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | int
+| *testConnectionOn Startup* (common) | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | boolean
+| *asyncStartListener* (advanced) | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, the [...]
+| *asyncStopListener* (advanced) | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | boolean
+| *forceSendOriginal Message* (producer) | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | boolean
+| *requestTimeout* (producer) | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000 | long
+| *requestTimeoutChecker Interval* (advanced) | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000 | long
+| *transferExchange* (advanced) | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an E [...]
+| *transferException* (advanced) | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes preced [...]
+| *transferFault* (advanced) | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed with a SOAP fault (not exception) on the consumer side, then the fault flag on Message#isFault() will be send back in the response as a JMS header with the key org.apache.camel.component.jms.JmsConstants#JMS_TRANSFER_FAULT#JMS_TRANSFER_FAULT. If the client is Camel, the returned fault flag will be set on the org.apache.camel.Message#setFault(boolean). You may want to enable  [...]
+| *jmsOperations* (advanced) | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. |  | JmsOperations
+| *destinationResolver* (advanced) | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). |  | DestinationResolver
+| *replyToType* (producer) | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running  [...]
+| *preserveMessageQos* (producer) | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnable [...]
+| *asyncConsumer* (consumer) | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transac [...]
+| *allowNullBody* (producer) | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | boolean
+| *includeSentJMS MessageID* (producer) | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | boolean
+| *includeAllJMSX Properties* (advanced) | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | boolean
+| *defaultTaskExecutor Type* (consumer) | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAs [...]
+| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
+| *allowAdditionalHeaders* (producer) | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. |  | String
+| *queueBrowseStrategy* (advanced) | To use a custom QueueBrowseStrategy when browsing queues |  | QueueBrowseStrategy
+| *messageCreatedStrategy* (advanced) | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. |  | MessageCreatedStrategy
+| *waitForProvision CorrelationToBeUpdated Counter* (advanced) | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | int
+| *waitForProvision CorrelationToBeUpdated ThreadSleepingTime* (advanced) | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100 | long
+| *correlationProperty* (producer) | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. |  | String
+| *subscriptionDurable* (consumer) | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomai [...]
+| *subscriptionShared* (consumer) | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscrip [...]
+| *subscriptionName* (consumer) | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). |  | String
+| *streamMessageType Enabled* (producer) | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until n [...]
+| *formatDateHeadersTo Iso8601* (producer) | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | boolean
+| *headerFilterStrategy* (filter) | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+
+// endpoint options: START
+The AMQP endpoint is configured using URI syntax:
+
+----
+amqp:destinationType:destinationName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (2 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *destinationType* | The kind of destination to use | queue | String
+| *destinationName* | *Required* Name of the queue or topic to use as destination |  | String
+|===
+
+
+==== Query Parameters (91 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *clientId* (common) | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. |  | String
+| *connectionFactory* (common) | The connection factory to be use. A connection factory must be configured either on the component or endpoint. |  | ConnectionFactory
+| *disableReplyTo* (common) | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message broker [...]
+| *durableSubscriptionName* (common) | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. |  | String
+| *jmsMessageType* (common) | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. |  | JmsMessageType
+| *testConnectionOnStartup* (common) | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | boolean
+| *acknowledgementModeName* (consumer) | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | String
+| *asyncConsumer* (consumer) | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transac [...]
+| *autoStartup* (consumer) | Specifies whether the consumer container should auto-startup. | true | boolean
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *cacheLevel* (consumer) | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. |  | int
+| *cacheLevelName* (consumer) | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. | CACHE_AUTO | String
+| *concurrentConsumers* (consumer) | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | int
+| *maxConcurrentConsumers* (consumer) | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. |  | int
+| *replyTo* (consumer) | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). |  | String
+| *replyToDeliveryPersistent* (consumer) | Specifies whether to use persistent delivery by default for replies. | true | boolean
+| *selector* (consumer) | Sets the JMS selector to use |  | String
+| *subscriptionDurable* (consumer) | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomai [...]
+| *subscriptionName* (consumer) | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). |  | String
+| *subscriptionShared* (consumer) | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscrip [...]
+| *acceptMessagesWhileStopping* (consumer) | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on th [...]
+| *allowReplyManagerQuickStop* (consumer) | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | [...]
+| *consumerType* (consumer) | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms. [...]
+| *defaultTaskExecutorType* (consumer) | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsy [...]
+| *eagerLoadingOfProperties* (consumer) | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *exposeListenerSession* (consumer) | Specifies whether the listener session should be exposed when consuming messages. | false | boolean
+| *replyToSameDestination Allowed* (consumer) | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | boolean
+| *taskExecutor* (consumer) | Allows you to specify a custom task executor for consuming messages. |  | TaskExecutor
+| *deliveryMode* (producer) | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. |  | Integer
+| *deliveryPersistent* (producer) | Specifies whether persistent delivery is used by default. | true | boolean
+| *explicitQosEnabled* (producer) | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | Boolean
+| *formatDateHeadersToIso8601* (producer) | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | boolean
+| *preserveMessageQos* (producer) | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnable [...]
+| *priority* (producer) | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. | 4 | int
+| *replyToConcurrentConsumers* (producer) | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | int
+| *replyToMaxConcurrent Consumers* (producer) | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. |  | int
+| *replyToOnTimeoutMax ConcurrentConsumers* (producer) | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | int
+| *replyToOverride* (producer) | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. |  | String
+| *replyToType* (producer) | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running  [...]
+| *requestTimeout* (producer) | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000 | long
+| *timeToLive* (producer) | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1 | long
+| *allowAdditionalHeaders* (producer) | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. |  | String
+| *allowNullBody* (producer) | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | boolean
+| *alwaysCopyMessage* (producer) | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | boolean
+| *correlationProperty* (producer) | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. |  | String
+| *disableTimeToLive* (producer) | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message w [...]
+| *forceSendOriginalMessage* (producer) | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | boolean
+| *includeSentJMSMessageID* (producer) | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | boolean
+| *replyToCacheLevelName* (producer) | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE [...]
+| *replyToDestinationSelector Name* (producer) | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). |  | String
+| *streamMessageTypeEnabled* (producer) | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no [...]
+| *allowSerializedHeaders* (advanced) | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | boolean
+| *asyncStartListener* (advanced) | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, the [...]
+| *asyncStopListener* (advanced) | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | boolean
+| *destinationResolver* (advanced) | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). |  | DestinationResolver
+| *errorHandler* (advanced) | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. [...]
+| *exceptionListener* (advanced) | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. |  | ExceptionListener
+| *headerFilterStrategy* (advanced) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *idleConsumerLimit* (advanced) | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | int
+| *idleTaskExecutionLimit* (advanced) | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | int
+| *includeAllJMSXProperties* (advanced) | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | boolean
+| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
+| *mapJmsMessage* (advanced) | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | boolean
+| *maxMessagesPerTask* (advanced) | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | int
+| *messageConverter* (advanced) | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. |  | MessageConverter
+| *messageCreatedStrategy* (advanced) | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. |  | MessageCreatedStrategy
+| *messageIdEnabled* (advanced) | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker.If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value | true | boolean
+| *messageListenerContainer Factory* (advanced) | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. |  | MessageListener ContainerFactory
+| *messageTimestampEnabled* (advanced) | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker.If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value | true | boolean
+| *pubSubNoLocal* (advanced) | Specifies whether to inhibit the delivery of messages published by its own connection. | false | boolean
+| *receiveTimeout* (advanced) | The timeout for receiving messages (in milliseconds). | 1000 | long
+| *recoveryInterval* (advanced) | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | long
+| *requestTimeoutChecker Interval* (advanced) | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000 | long
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *transferException* (advanced) | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes preced [...]
+| *transferExchange* (advanced) | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an E [...]
+| *transferFault* (advanced) | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed with a SOAP fault (not exception) on the consumer side, then the fault flag on Message#isFault() will be send back in the response as a JMS header with the key org.apache.camel.component.jms.JmsConstants#JMS_TRANSFER_FAULT#JMS_TRANSFER_FAULT. If the client is Camel, the returned fault flag will be set on the org.apache.camel.Message#setFault(boolean). You may want to enable  [...]
+| *useMessageIDAsCorrelation ID* (advanced) | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | boolean
+| *waitForProvisionCorrelation ToBeUpdatedCounter* (advanced) | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | int
+| *waitForProvisionCorrelation ToBeUpdatedThreadSleeping Time* (advanced) | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100 | long
+| *errorHandlerLoggingLevel* (logging) | Allows to configure the default errorHandler logging level for logging uncaught exceptions. | WARN | LoggingLevel
+| *errorHandlerLogStackTrace* (logging) | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | boolean
+| *password* (security) | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. |  | String
+| *username* (security) | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. |  | String
+| *transacted* (transaction) | Specifies whether to use transacted mode | false | boolean
+| *lazyCreateTransaction Manager* (transaction) | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | boolean
+| *transactionManager* (transaction) | The Spring transaction manager to use. |  | PlatformTransaction Manager
+| *transactionName* (transaction) | The name of the transaction to use. |  | String
+| *transactionTimeout* (transaction) | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | int
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 81 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.amqp.accept-messages-while-stopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead lette [...]
+| *camel.component.amqp.acknowledgement-mode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode.For the regular modes, it is preferable to use the acknowledgementModeName instead. |  | Integer
+| *camel.component.amqp.acknowledgement-mode-name* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | String
+| *camel.component.amqp.allow-additional-headers* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. |  | String
+| *camel.component.amqp.allow-null-body* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | Boolean
+| *camel.component.amqp.allow-reply-manager-quick-stop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this f [...]
+| *camel.component.amqp.always-copy-message* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | Boolean
+| *camel.component.amqp.async-consumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note [...]
+| *camel.component.amqp.async-start-listener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option  [...]
+| *camel.component.amqp.async-stop-listener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | Boolean
+| *camel.component.amqp.auto-startup* | Specifies whether the consumer container should auto-startup. | true | Boolean
+| *camel.component.amqp.cache-level* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. |  | Integer
+| *camel.component.amqp.cache-level-name* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. | CACHE_AUTO | String
+| *camel.component.amqp.client-id* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. |  | String
+| *camel.component.amqp.concurrent-consumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | Integer
+| *camel.component.amqp.configuration* | To use a shared JMS configuration. The option is a org.apache.camel.component.jms.JmsConfiguration type. |  | String
+| *camel.component.amqp.connection-factory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. The option is a javax.jms.ConnectionFactory type. |  | String
+| *camel.component.amqp.correlation-property* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. |  | String
+| *camel.component.amqp.default-task-executor-type* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints  [...]
+| *camel.component.amqp.delivery-mode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. |  | Integer
+| *camel.component.amqp.delivery-persistent* | Specifies whether persistent delivery is used by default. | true | Boolean
+| *camel.component.amqp.destination-resolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). The option is a org.springframework.jms.support.destination.DestinationResolver type. |  | String
+| *camel.component.amqp.durable-subscription-name* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. |  | String
+| *camel.component.amqp.eager-loading-of-properties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties | false | Boolean
+| *camel.component.amqp.enabled* | Enable amqp component | true | Boolean
+| *camel.component.amqp.error-handler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom er [...]
+| *camel.component.amqp.error-handler-log-stack-trace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | Boolean
+| *camel.component.amqp.error-handler-logging-level* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. |  | LoggingLevel
+| *camel.component.amqp.exception-listener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. The option is a javax.jms.ExceptionListener type. |  | String
+| *camel.component.amqp.explicit-qos-enabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | Boolean
+| *camel.component.amqp.expose-listener-session* | Specifies whether the listener session should be exposed when consuming messages. | false | Boolean
+| *camel.component.amqp.force-send-original-message* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | Boolean
+| *camel.component.amqp.format-date-headers-to-iso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | Boolean
+| *camel.component.amqp.header-filter-strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type. |  | String
+| *camel.component.amqp.idle-consumer-limit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | Integer
+| *camel.component.amqp.idle-task-execution-limit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | Integer
+| *camel.component.amqp.include-all-j-m-s-x-properties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | Boolean
+| *camel.component.amqp.include-sent-j-m-s-message-i-d* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | Boolean
+| *camel.component.amqp.jms-key-format-strategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of t [...]
+| *camel.component.amqp.jms-operations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. The option is a org.springframework.jms.core.JmsOperations type. |  | String
+| *camel.component.amqp.lazy-create-transaction-manager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | Boolean
+| *camel.component.amqp.map-jms-message* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | Boolean
+| *camel.component.amqp.max-concurrent-consumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. |  | Integer
+| *camel.component.amqp.max-messages-per-task* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | Integer
+| *camel.component.amqp.message-converter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. The option is a org.springframework.jms.support.converter.MessageConverter type. |  | String
+| *camel.component.amqp.message-created-strategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. The option is a org.apache.camel.component.jms.MessageCreatedStrategy type. |  | String
+| *camel.component.amqp.message-id-enabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker.If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value | true | Boolean
+| *camel.component.amqp.message-timestamp-enabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker.If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value | true | Boolean
+| *camel.component.amqp.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. |  | String
+| *camel.component.amqp.preserve-message-qos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The expli [...]
+| *camel.component.amqp.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. | 4 | Integer
+| *camel.component.amqp.pub-sub-no-local* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | Boolean
+| *camel.component.amqp.queue-browse-strategy* | To use a custom QueueBrowseStrategy when browsing queues. The option is a org.apache.camel.component.jms.QueueBrowseStrategy type. |  | String
+| *camel.component.amqp.receive-timeout* | The timeout for receiving messages (in milliseconds). | 1000 | Long
+| *camel.component.amqp.recovery-interval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | Long
+| *camel.component.amqp.reply-on-timeout-to-max-concurrent-consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | Integer
+| *camel.component.amqp.reply-to-cache-level-name* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary que [...]
+| *camel.component.amqp.reply-to-concurrent-consumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | Integer
+| *camel.component.amqp.reply-to-max-concurrent-consumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. |  | Integer
+| *camel.component.amqp.reply-to-type* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications [...]
+| *camel.component.amqp.request-timeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000 | Long
+| *camel.component.amqp.request-timeout-checker-interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000 | Long
+| *camel.component.amqp.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.amqp.stream-message-type-enabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMes [...]
+| *camel.component.amqp.subscription-durable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the  [...]
+| *camel.component.amqp.subscription-name* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS  [...]
+| *camel.component.amqp.subscription-shared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined wi [...]
+| *camel.component.amqp.task-executor* | Allows you to specify a custom task executor for consuming messages. The option is a org.springframework.core.task.TaskExecutor type. |  | String
+| *camel.component.amqp.test-connection-on-startup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | Boolean
+| *camel.component.amqp.time-to-live* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1 | Long
+| *camel.component.amqp.transacted* | Specifies whether to use transacted mode | false | Boolean
+| *camel.component.amqp.transaction-manager* | The Spring transaction manager to use. The option is a org.springframework.transaction.PlatformTransactionManager type. |  | String
+| *camel.component.amqp.transaction-name* | The name of the transaction to use. |  | String
+| *camel.component.amqp.transaction-timeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | Integer
+| *camel.component.amqp.transfer-exception* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option t [...]
+| *camel.component.amqp.transfer-exchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the paylo [...]
+| *camel.component.amqp.transfer-fault* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed with a SOAP fault (not exception) on the consumer side, then the fault flag on Message#isFault() will be send back in the response as a JMS header with the key org.apache.camel.component.jms.JmsConstants #JMS_TRANSFER_FAULT#JMS_TRANSFER_FAULT. If the client is Camel, the returned fault flag will be set on the org.apache.camel.Message#setFault(boolean). You may wan [...]
+| *camel.component.amqp.use-message-i-d-as-correlation-i-d* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | Boolean
+| *camel.component.amqp.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. |  | String
+| *camel.component.amqp.wait-for-provision-correlation-to-be-updated-counter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | Integer
+| *camel.component.amqp.wait-for-provision-correlation-to-be-updated-thread-sleeping-time* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100 | Long
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+== Usage
+
+As AMQP component is inherited from JMS component, the usage of the
+former is almost identical to the latter:
+
+*Using AMQP component*
+
+[source,java]
+----
+// Consuming from AMQP queue
+from("amqp:queue:incoming").
+  to(...);
+ 
+// Sending message to the AMQP topic
+from(...).
+  to("amqp:topic:notify");
+----
+
+== Configuring AMQP component
+
+*Creating AMQP 1.0 component*
+
+[source,java]
+----
+AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
+ 
+AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
+----
+
+You can also add an instance
+of `org.apache.camel.component.amqp.AMQPConnectionDetails` to the
+registry in order to automatically configure the AMQP component. For example for Spring Boot you just have to define bean:
+
+*AMQP connection details auto-configuration*
+
+[source,java]
+----
+@Bean
+AMQPConnectionDetails amqpConnection() {
+  return new AMQPConnectionDetails("amqp://localhost:5672"); 
+}
+ 
+@Bean
+AMQPConnectionDetails securedAmqpConnection() {
+  return new AMQPConnectionDetails("amqp://localhost:5672", "username", "password"); 
+}
+----
+
+Likewise, you can also use CDI producer methods when using Camel-CDI
+
+*AMQP connection details auto-configuration for CDI*
+
+[source,java]
+----
+@Produces
+AMQPConnectionDetails amqpConnection() {
+  return new AMQPConnectionDetails("amqp://localhost:5672");
+}
+----
+
+You can also rely on the xref:properties-component.adoc[Camel properties] to read
+the AMQP connection details. Factory
+method `AMQPConnectionDetails.discoverAMQP()` attempts to read Camel
+properties in a Kubernetes-like convention, just as demonstrated on the
+snippet below:
+
+*AMQP connection details auto-configuration*
+
+[source,java]
+----
+export AMQP_SERVICE_HOST = "mybroker.com"
+export AMQP_SERVICE_PORT = "6666"
+export AMQP_SERVICE_USERNAME = "username"
+export AMQP_SERVICE_PASSWORD = "password"
+ 
+...
+ 
+@Bean
+AMQPConnectionDetails amqpConnection() {
+  return AMQPConnectionDetails.discoverAMQP(); 
+}
+----
+
+*Enabling AMQP specific options*
+
+If you, for example, need to enable `amqp.traceFrames` you can do that by appending the option to your URI, like the following example:
+
+[source,java]
+----
+AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
+----
+
+For reference take a look at the https://qpid.apache.org/releases/qpid-jms-0.29.0/docs/index.html[QPID JMS client configuration]
+
+== Using topics
+
+To have using topics working with `camel-amqp` you need to configure the
+component to use `topic://` as topic prefix, as shown below:
+
+[source,java]
+----
+ <bean id="amqp" class="org.apache.camel.component.amqp.AmqpComponent">
+   <property name="connectionFactory">
+     <bean class="org.apache.qpid.jms.JmsConnectionFactory" factory-method="createFromURL">
+       <property name="remoteURI" value="amqp://localhost:5672" />
+       <property name="topicPrefix" value="topic://" />  <!-- only necessary when connecting to ActiveMQ over AMQP 1.0 -->
+     </bean>
+   </property>
+ </bean>
+----
+
+Keep in mind that both  `AMQPComponent#amqpComponent()` methods and
+`AMQPConnectionDetails` pre-configure the component with the topic
+prefix, so you don't have to configure it explicitly.
diff --git a/docs/components/modules/ROOT/pages/apns-component.adoc b/docs/components/modules/ROOT/pages/apns-component.adoc
deleted file mode 120000
index 2b479f9..0000000
--- a/docs/components/modules/ROOT/pages/apns-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-apns/src/main/docs/apns-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/apns-component.adoc b/docs/components/modules/ROOT/pages/apns-component.adoc
new file mode 100644
index 0000000..41a5411
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/apns-component.adoc
@@ -0,0 +1,323 @@
+= APNS Component
+
+*Available as of Camel version 2.8*
+
+
+The APNS component is used for sending notifications to iOS devices.
+The APNS components use https://github.com/notnoop/java-apns[javapns]
+library. +
+ The component supports sending notifications to Apple Push Notification
+Servers (APNS) and consuming feedback from the servers.
+
+The consumer is configured with 3600 seconds for polling by default
+because it is a best practice to consume feedback stream from Apple Push
+Notification Servers only from time to time. For example: every 1 hour
+to avoid flooding the servers.
+
+The feedback stream gives informations about inactive devices. You only
+need to get this informations every some hours if your mobile
+application is not a heavily used one.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-apns</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== URI format
+
+To send notifications:
+
+[source,java]
+---------------------
+apns:notify[?options]
+---------------------
+
+To consume feedback:
+
+[source,java]
+-----------------------
+apns:consumer[?options]
+-----------------------
+
+== Options
+
+
+
+// component options: START
+The APNS component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *apnsService* (common) | *Required* The ApnsService to use. The org.apache.camel.component.apns.factory.ApnsServiceFactory can be used to build a ApnsService |  | ApnsService
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The APNS endpoint is configured using URI syntax:
+
+----
+apns:name
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *name* | Name of the endpoint |  | String
+|===
+
+
+==== Query Parameters (20 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *tokens* (common) | Configure this property in case you want to statically declare tokens related to devices you want to notify. Tokens are separated by comma. |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 3 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.apns.apns-service* | The ApnsService to use. The org.apache.camel.component.apns.factory.ApnsServiceFactory can be used to build a ApnsService. The option is a com.notnoop.apns.ApnsService type. |  | String
+| *camel.component.apns.enabled* | Enable apns component | true | Boolean
+| *camel.component.apns.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+You can append query options to the URI in the following format,
+`?option=value&option=value&...`
+
+=== Component
+
+The `ApnsComponent` must be configured with a
+`com.notnoop.apns.ApnsService`. The service can be created and
+configured using the
+`org.apache.camel.component.apns.factory.ApnsServiceFactory`. See
+further below for an example. And as well in the
+https://github.com/apache/camel/tree/master/components/camel-apns[test
+source code].
+
+==== SSL Setting
+In order to use secure connection, an instance of `org.apache.camel.support.jsse.SSLContextParameters`
+ should be injected to `org.apache.camel.component.apns.factory.ApnsServiceFactory` which is
+ used to configure the component. See the test resources for an example.
+ https://github.com/apache/camel/blob/master/components/camel-apns/src/test/resources/org/apache/camel/component/apns/spring/SpringApnsConsumerTest-context.xml[ssl example]
+
+== Exchange data format
+
+When Camel will fetch feedback data corresponding to inactive devices,
+it will retrieve a List of InactiveDevice objects. Each InactiveDevice
+object of the retrieved list will be setted as the In body, and then
+processed by the consumer endpoint.
+
+== Message Headers
+
+Camel Apns uses these headers.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Property |Default |Description
+|`CamelApnsTokens` | |Empty by default.
+|`CamelApnsMessageType` |`STRING, PAYLOAD, APNS_NOTIFICATION`  |In case you choose PAYLOAD for the message type, then the message will
+be considered as a APNS payload and sent as is. In case you choose
+STRING, message will be converted as a APNS payload. From *Camel 2.16*
+onwards APNS_NOTIFICATION is used for sending message body as
+com.notnoop.apns.ApnsNotification types.
+|=======================================================================
+
+== ApnsServiceFactory builder callback
+
+`ApnsServiceFactory` comes with the empty callback method that could be
+used to configure (or even replace) the default `ApnsServiceBuilder`
+instance. The signature of the method could look as follows:
+
+[source,java]
+----------------------------------------------------------------------------------------
+protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder);
+----------------------------------------------------------------------------------------
+
+And could be used like as follows:
+
+[source,java]
+-------------------------------------------------------------------------------------------
+ApnsServiceFactory proxiedApnsServiceFactory = new ApnsServiceFactory(){
+  
+  @Override
+  protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder) {
+    return serviceBuilder.withSocksProxy("my.proxy.com", 6666);
+  }
+
+};
+-------------------------------------------------------------------------------------------
+
+== Samples
+
+=== Camel Xml route
+
+[source,xml]
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:camel="http://camel.apache.org/schema/spring"
+       xsi:schemaLocation="
+        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+    <!-- Replace by desired values -->
+    <bean id="apnsServiceFactory" class="org.apache.camel.component.apns.factory.ApnsServiceFactory">
+
+        <!-- Optional configuration of feedback host and port -->
+        <!-- <property name="feedbackHost" value="localhost" /> -->
+        <!-- <property name="feedbackPort" value="7843" /> -->
+
+        <!-- Optional configuration of gateway host and port -->
+        <!-- <property name="gatewayHost" value="localhost" /> -->
+        <!-- <property name="gatewayPort" value="7654" /> -->
+
+        <!-- Declaration of certificate used -->
+                <!-- from Camel 2.11 onwards you can use prefix: classpath:, file: to refer to load the certificate from classpath or file. Default it classpath -->
+        <property name="certificatePath" value="certificate.p12" />
+        <property name="certificatePassword" value="MyCertPassword" />
+
+        <!-- Optional connection strategy - By Default: No need to configure -->
+        <!-- Possible options: NON_BLOCKING, QUEUE, POOL or Nothing -->
+        <!-- <property name="connectionStrategy" value="POOL" /> -->
+        <!-- Optional pool size -->
+        <!-- <property name="poolSize" value="15" /> -->
+
+        <!-- Optional connection strategy - By Default: No need to configure -->
+        <!-- Possible options: EVERY_HALF_HOUR, EVERY_NOTIFICATION or Nothing (Corresponds to NEVER javapns option) -->
+        <!-- <property name="reconnectionPolicy" value="EVERY_HALF_HOUR" /> -->
+    </bean>
+
+    <bean id="apnsService" factory-bean="apnsServiceFactory" factory-method="getApnsService" />
+
+    <!-- Replace this declaration by wanted configuration -->
+    <bean id="apns" class="org.apache.camel.component.apns.ApnsComponent">
+        <property name="apnsService" ref="apnsService" />
+    </bean>
+
+    <camelContext id="camel-apns-test" xmlns="http://camel.apache.org/schema/spring">
+            <route id="apns-test">
+                    <from uri="apns:consumer?initialDelay=10&amp;delay=3600&amp;timeUnit=SECONDS" />
+                    <to uri="log:org.apache.camel.component.apns?showAll=true&amp;multiline=true" />
+                    <to uri="mock:result" />
+            </route>
+    </camelContext>
+
+</beans>
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+=== Camel Java route
+
+[[APNS-Createcamelcontextanddeclareapnscomponentprogrammatically]]
+Create camel context and declare apns component programmatically
+
+[source,java]
+----------------------------------------------------------------------------------
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext camelContext = super.createCamelContext();
+
+        ApnsServiceFactory apnsServiceFactory = new ApnsServiceFactory();
+        apnsServiceFactory.setCertificatePath("classpath:/certificate.p12");
+        apnsServiceFactory.setCertificatePassword("MyCertPassword");
+
+        ApnsService apnsService = apnsServiceFactory.getApnsService(camelContext);
+
+        ApnsComponent apnsComponent = new ApnsComponent(apnsService);
+        camelContext.addComponent("apns", apnsComponent);
+
+        return camelContext;
+    }
+----------------------------------------------------------------------------------
+
+[[APNS-ApnsProducer-iOStargetdevicedynamicallyconfiguredviaheader:"CamelApnsTokens"]]
+ApnsProducer - iOS target device dynamically configured via header:
+`"CamelApnsTokens"`
+
+[source,java]
+---------------------------------------------------------------------------------------
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("direct:test")
+                    .setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
+                    .to("apns:notify");
+                }
+        }
+    }
+---------------------------------------------------------------------------------------
+
+[[APNS-ApnsProducer-iOStargetdevicestaticallyconfiguredviauri]]
+ApnsProducer - iOS target device statically configured via uri
+
+[source,java]
+------------------------------------------------------------------
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("direct:test").
+                to("apns:notify?tokens=" + IOS_DEVICE_TOKEN);
+            }
+        };
+    }
+------------------------------------------------------------------
+
+[[APNS-ApnsConsumer]]
+ApnsConsumer
+
+[source,java]
+--------------------------------------------------------------------------
+from("apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS")
+    .to("log:com.apache.camel.component.apns?showAll=true&multiline=true")
+    .to("mock:result");
+--------------------------------------------------------------------------
diff --git a/docs/components/modules/ROOT/pages/as2-component.adoc b/docs/components/modules/ROOT/pages/as2-component.adoc
new file mode 100644
index 0000000..fa62211
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/as2-component.adoc
@@ -0,0 +1,273 @@
+= AS2 Component
+
+*Available as of Camel version 2.22*
+
+
+The AS2 component provides transport of EDI messages using the HTTP transfer protocol
+as specified in https://tools.ietf.org/html/rfc4130[RFC4130]. 
+
+NOTE: This component is currently a work in progress. Expect URI options and path and query parameters to change in future versions of this component.
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-as2</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI format
+
+[source]
+----
+as2://apiName/methodName
+----
+
+apiName can be one of:
+
+* client
+* server
+
+
+== AS2 Options
+
+
+// component options: START
+The AS2 component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (common) | To use the shared configuration |  | AS2Configuration
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+// endpoint options: START
+The AS2 endpoint is configured using URI syntax:
+
+----
+as2:apiName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *apiName* | *Required* What kind of operation to perform |  | AS2ApiName
+|===
+
+
+==== Query Parameters (31 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *as2From* (common) | The value of the AS2From header of AS2 message. |  | String
+| *as2MessageStructure* (common) | The structure of AS2 Message. One of: PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, signature |  | AS2MessageStructure
+| *as2To* (common) | The value of the AS2To header of AS2 message. |  | String
+| *as2Version* (common) | The version of the AS2 protocol. | 1.1 | String
+| *clientFqdn* (common) | The Client Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | camel.apache.org | String
+| *compressionAlgorithm* (common) | The algorithm used to compress EDI message. |  | AS2Compression Algorithm
+| *decryptingPrivateKey* (common) | The key used to encrypt the EDI message. |  | PrivateKey
+| *dispositionNotificationTo* (common) | The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message. |  | String
+| *ediMessageTransferEncoding* (common) | The transfer encoding of EDI message. |  | String
+| *ediMessageType* (common) | The content type of EDI message. One of application/edifact, application/edi-x12, application/edi-consent |  | ContentType
+| *encryptingAlgorithm* (common) | The algorithm used to encrypt EDI message. |  | AS2EncryptionAlgorithm
+| *encryptingCertificateChain* (common) | The chain of certificates used to encrypt EDI message. |  | Certificate[]
+| *from* (common) | The value of the From header of AS2 message. |  | String
+| *inBody* (common) | Sets the name of a parameter to be passed in the exchange In Body |  | String
+| *methodName* (common) | *Required* What sub operation to use for the selected operation |  | String
+| *requestUri* (common) | The request URI of EDI message. | / | String
+| *server* (common) | The value included in the Server message header identifying the AS2 Server. | Camel AS2 Server Endpoint | String
+| *serverFqdn* (common) | The Server Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | camel.apache.org | String
+| *serverPortNumber* (common) | The port number of server. |  | Integer
+| *signedReceiptMicAlgorithms* (common) | The list of algorithms, in order of preference, requested to generate a message integrity check (MIC) returned in message dispostion notification (MDN) |  | String[]
+| *signingAlgorithm* (common) | The algorithm used to sign EDI message. |  | AS2SignatureAlgorithm
+| *signingCertificateChain* (common) | The chain of certificates used to sign EDI message. |  | Certificate[]
+| *signingPrivateKey* (common) | The key used to sign the EDI message. |  | PrivateKey
+| *subject* (common) | The value of Subject header of AS2 message. |  | String
+| *targetHostname* (common) | The host name (IP or DNS name) of target host. |  | String
+| *targetPortNumber* (common) | The port number of target host. -1 indicates the scheme default port. |  | Integer
+| *userAgent* (common) | The value included in the User-Agent message header identifying the AS2 user agent. | Camel AS2 Client Endpoint | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.as2.configuration.api-name* | What kind of operation to perform |  | AS2ApiName
+| *camel.component.as2.configuration.as2-from* | The value of the AS2From header of AS2 message. |  | String
+| *camel.component.as2.configuration.as2-message-structure* | The structure of AS2 Message. One of: PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, signature |  | AS2MessageStructure
+| *camel.component.as2.configuration.as2-to* | The value of the AS2To header of AS2 message. |  | String
+| *camel.component.as2.configuration.as2-version* | The version of the AS2 protocol. | 1.1 | String
+| *camel.component.as2.configuration.client-fqdn* | The Client Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | camel.apache.org | String
+| *camel.component.as2.configuration.compression-algorithm* | The algorithm used to compress EDI message. |  | AS2Compression Algorithm
+| *camel.component.as2.configuration.decrypting-private-key* | The key used to encrypt the EDI message. |  | PrivateKey
+| *camel.component.as2.configuration.disposition-notification-to* | The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message. |  | String
+| *camel.component.as2.configuration.edi-message-transfer-encoding* | The transfer encoding of EDI message. |  | String
+| *camel.component.as2.configuration.edi-message-type* | The content type of EDI message. One of application/edifact, application/edi-x12, application/edi-consent |  | ContentType
+| *camel.component.as2.configuration.encrypting-algorithm* | The algorithm used to encrypt EDI message. |  | AS2EncryptionAlgorithm
+| *camel.component.as2.configuration.encrypting-certificate-chain* | The chain of certificates used to encrypt EDI message. |  | Certificate[]
+| *camel.component.as2.configuration.from* | The value of the From header of AS2 message. |  | String
+| *camel.component.as2.configuration.method-name* | What sub operation to use for the selected operation |  | String
+| *camel.component.as2.configuration.request-uri* | The request URI of EDI message. | / | String
+| *camel.component.as2.configuration.server* | The value included in the Server message header identifying the AS2 Server. | Camel AS2 Server Endpoint | String
+| *camel.component.as2.configuration.server-fqdn* | The Server Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | camel.apache.org | String
+| *camel.component.as2.configuration.server-port-number* | The port number of server. |  | Integer
+| *camel.component.as2.configuration.signed-receipt-mic-algorithms* | The list of algorithms, in order of preference, requested to generate a message integrity check (MIC) returned in message dispostion notification (MDN) |  | String[]
+| *camel.component.as2.configuration.signing-algorithm* | The algorithm used to sign EDI message. |  | AS2SignatureAlgorithm
+| *camel.component.as2.configuration.signing-certificate-chain* | The chain of certificates used to sign EDI message. |  | Certificate[]
+| *camel.component.as2.configuration.signing-private-key* | The key used to sign the EDI message. |  | PrivateKey
+| *camel.component.as2.configuration.subject* | The value of Subject header of AS2 message. |  | String
+| *camel.component.as2.configuration.target-hostname* | The host name (IP or DNS name) of target host. |  | String
+| *camel.component.as2.configuration.target-port-number* | The port number of target host. -1 indicates the scheme default port. |  | Integer
+| *camel.component.as2.configuration.user-agent* | The value included in the User-Agent message header identifying the AS2 user agent. | Camel AS2 Client Endpoint | String
+| *camel.component.as2.enabled* | Whether to enable auto configuration of the as2 component. This is enabled by default. |  | Boolean
+| *camel.component.as2.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+== Client Endpoints:
+
+Client endpoints use the endpoint prefix *`client`* followed by the name of a method
+and associated options described next. The endpoint URI MUST contain the prefix *`client`*.
+
+[source]
+----
+as2://client/method?[options]
+----
+
+Endpoint options that are not mandatory are denoted by *[]*. When there
+are no mandatory options for an endpoint, one of the set of *[]* options
+MUST be provided. Producer endpoints can also use a special
+option *`inBody`* that in turn should contain the name of the endpoint
+option whose value will be contained in the Camel Exchange In message.
+
+Any of the endpoint options can be provided in either the endpoint URI,
+or dynamically in a message header. The message header name must be of
+the format *`CamelAS2.<option>`*. Note that the *`inBody`* option
+overrides message header, i.e. the endpoint
+option *`inBody=option`* would override a *`CamelAS2.option`* header.
+
+If a value is not provided for the option *defaultRequest* either in the
+endpoint URI or in a message header, it will be assumed to be `null`.
+Note that the `null` value will only be used if other options do not
+satisfy matching endpoints.
+
+In case of AS2 API errors the endpoint will throw a
+RuntimeCamelException with a
+*org.apache.http.HttpException* derived exception
+cause.
+
+[width="100%",cols="10%,10%,70%",options="header"]
+|===
+|Method |Options |Result Body Type
+
+|send |ediMessage, requestUri, subject, from, as2From, as2To, as2MessageStructure, ediMessageContentType, ediMessageTransferEncoding, dispositionNotificationTo, signedReceiptMicAlgorithms |org.apache.http.protocol.HttpCoreContext
+|===
+
+URI Options for _client_
+
+
+[width="100%",cols="10%,90%",options="header"]
+|===
+|Name |Type
+
+|ediMessage |String
+
+|requestUri |String
+
+|subject |String
+
+|from |String
+
+|as2From |String
+
+|as2To |String
+
+|as2MessageStructure |org.apache.camel.component.as2.api.AS2MessageStructure
+
+|ediMessageContentType |String
+
+|ediMessageTransferEncoding |String
+
+|dispositionNotificationTo |String
+
+|signedReceiptMicAlgorithms |String[]
+|===
+
+
+== Server Endpoints:
+
+Server endpoints use the endpoint prefix *`server`* followed by the name of a method
+and associated options described next. The endpoint URI MUST contain the prefix *`server`*.
+
+[source]
+----
+as2://server/method?[options]
+----
+
+Endpoint options that are not mandatory are denoted by *[]*. When there
+are no mandatory options for an endpoint, one of the set of *[]* options
+MUST be provided. Producer endpoints can also use a special
+option *`inBody`* that in turn should contain the name of the endpoint
+option whose value will be contained in the Camel Exchange In message.
+
+Any of the endpoint options can be provided in either the endpoint URI,
+or dynamically in a message header. The message header name must be of
+the format *`CamelAS2.<option>`*. Note that the *`inBody`* option
+overrides message header, i.e. the endpoint
+option *`inBody=option`* would override a *`CamelAS2.option`* header.
+
+If a value is not provided for the option *defaultRequest* either in the
+endpoint URI or in a message header, it will be assumed to be `null`.
+Note that the `null` value will only be used if other options do not
+satisfy matching endpoints.
+
+In case of AS2 API errors the endpoint will throw a
+RuntimeCamelException with a
+*org.apache.http.HttpException* derived exception
+cause.
+
+[width="100%",cols="10%,10%,70%",options="header"]
+|===
+|Method |Options |Result Body Type
+
+|listen |requestUriPattern |org.apache.http.protocol.HttpCoreContext
+|===
+
+URI Options for _server_
+
+
+[width="100%",cols="10%,90%",options="header"]
+|===
+|Name |Type
+
+|requestUriPattern |String
+|===
diff --git a/docs/components/modules/ROOT/pages/asn1-dataformat.adoc b/docs/components/modules/ROOT/pages/asn1-dataformat.adoc
deleted file mode 120000
index f5e5bcd..0000000
--- a/docs/components/modules/ROOT/pages/asn1-dataformat.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-asn1/src/main/docs/asn1-dataformat.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/asn1-dataformat.adoc b/docs/components/modules/ROOT/pages/asn1-dataformat.adoc
new file mode 100644
index 0000000..af1bf4e
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/asn1-dataformat.adoc
@@ -0,0 +1,93 @@
+= ASN.1 File DataFormat
+
+*Available as of Camel version 2.20*
+
+
+The ASN.1 Data Format Data Format [Intoduction to ASN.1](https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx) is a Camel Frameworks's data format implementation based on Bouncy Castle's bcprov-jdk15on library and jASN.1's java compiler for the formal notation used for describing data transmitted by telecommunications protocols, regardless of language implementation and physical representation of these data, whatever the application, whether complex or very simple. Messages can be u [...]
+
+== ASN.1 Data Format Options
+
+// dataformat options: START
+The ASN.1 File dataformat supports 3 options, which are listed below.
+
+
+
+[width="100%",cols="2s,1m,1m,6",options="header"]
+|===
+| Name | Default | Java Type | Description
+| usingIterator | false | Boolean | If the asn1 file has more then one entry, the setting this option to true, allows to work with the splitter EIP, to split the data using an iterator in a streaming mode.
+| clazzName |  | String | Name of class to use when unmarshalling
+| contentTypeHeader | false | Boolean | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc.
+|===
+// dataformat options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 4 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.dataformat.asn1.clazz-name* | Name of class to use when unmarshalling |  | String
+| *camel.dataformat.asn1.content-type-header* | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. | false | Boolean
+| *camel.dataformat.asn1.enabled* | Whether to enable auto configuration of the asn1 data format. This is enabled by default. |  | Boolean
+| *camel.dataformat.asn1.using-iterator* | If the asn1 file has more then one entry, the setting this option to true, allows to work with the splitter EIP, to split the data using an iterator in a streaming mode. | false | Boolean
+|===
+// spring-boot-auto-configure options: END
+ND
+
+== Unmarshal
+
+There are 3 different ways to unmarshal ASN.1 structured messages. (Usually binary files)
+
+In this first example we unmarshal BER file payload to OutputStream and send it to mock endpoint.
+
+[source,java]
+-----------------------------------------------------------------------
+from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
+-----------------------------------------------------------------------
+
+In the second example we unmarshal BER file payload to byte array using Split EIP. The reason for applying Split EIP is that usually each BER file or (ASN.1 structured file) contains multiple records to process and Split EIP helps us to get each record in a file as byte arrays which is actually ASN1Primitive's instance (by the use of Bouncy Castle's ASN.1 support in bcprov-jdk15on library)
+Byte arrays then may be converted to ASN1Primitive by the help of public static method in (ASN1Primitive.fromByteArray)
+In such example, note that you need to set `usingIterator=true`
+
+[source,java]
+-----------------------------------------------------------------------
+from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
+-----------------------------------------------------------------------
+
+In the last example we unmarshal BER file payload to plain old Java Objects using Split EIP. The reason for applying Split EIP is already mentioned in the previous example. Please note and keep in mind that reason. In such example we also need to set the fully qualified name of the class or <YourObject>.class reference through data format.
+The important thing to note here is that your object should have been generated by jasn1 compiler which is a nice tool to generate java object representations of your ASN.1 structure. For the reference usage of jasn1 compiler see [JASN.1 Project Page](https://www.beanit.com/asn1/) and please also see how the compiler is invoked with the help of maven's exec plugin.
+For example, in this data format's unit tests an example ASN.1 structure(TestSMSBerCdr.asn1) is added in `src/test/resources/asn1_structure`. jasn1 compiler is invoked and java object's representations are generated in `$\{basedir\}/target/generated/src/test/java`
+The nice thing about this example, you will get POJO instance at the mock endpoint or at whatever your endpoint is.    
+
+[source,java]
+-----------------------------------------------------------------------
+from("direct:unmarshaldsl")
+         .unmarshal()
+         .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
+         .split(body(Iterator.class)).streaming()
+.to("mock:unmarshaldsl");
+-----------------------------------------------------------------------
+
+== Dependencies
+
+To use ASN.1 data format in your camel routes you need to add a dependency on
+*camel-asn1* which implements this data format.
+
+If you use Maven you can just add the following to your `pom.xml`,
+substituting the version number for the latest & greatest release (see
+the download page for the latest versions).
+
+[source,xml]
+----------------------------------------------------------
+<dependency>
+  <groupId>org.apache.camel</groupId>
+  <artifactId>camel-asn1</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----------------------------------------------------------
diff --git a/docs/components/modules/ROOT/pages/asterisk-component.adoc b/docs/components/modules/ROOT/pages/asterisk-component.adoc
deleted file mode 120000
index d995dcb..0000000
--- a/docs/components/modules/ROOT/pages/asterisk-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-asterisk/src/main/docs/asterisk-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/asterisk-component.adoc b/docs/components/modules/ROOT/pages/asterisk-component.adoc
new file mode 100644
index 0000000..780f86e
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/asterisk-component.adoc
@@ -0,0 +1,93 @@
+= Asterisk Component
+
+*Available as of Camel version 2.18*
+
+
+The Asterisk component allows you to work easily with an Asterisk PBX Server http://www.asterisk.org/ using https://asterisk-java.org/[asterisk-java]
+
+This component help to interface with http://www.voip-info.org/wiki-Asterisk+manager+API[Asterisk Manager Interface]
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-asterisk</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== URI format
+
+[source,java]
+-------------------------------------------------------------------------------------------------------------------------
+asterisk:name[?options]
+-------------------------------------------------------------------------------------------------------------------------
+
+== Options
+
+// component options: START
+The Asterisk component has no options.
+// component options: END
+
+// endpoint options: START
+The Asterisk endpoint is configured using URI syntax:
+
+----
+asterisk:name
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *name* | *Required* Logical name |  | String
+|===
+
+
+==== Query Parameters (8 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *hostname* (common) | *Required* The hostname of the asterisk server |  | String
+| *password* (common) | *Required* Login password |  | String
+| *username* (common) | *Required* Login username |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *action* (producer) | What action to perform such as getting queue status, sip peers or extension state. |  | AsteriskAction
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.asterisk.enabled* | Enable asterisk component | true | Boolean
+| *camel.component.asterisk.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+== Action
+Supported actions are:
+
+* QUEUE_STATUS, Queue Status
+* SIP_PEERS, List SIP Peers
+* EXTENSION_STATE, Check Extension Status
diff --git a/docs/components/modules/ROOT/pages/atmos-component.adoc b/docs/components/modules/ROOT/pages/atmos-component.adoc
deleted file mode 120000
index 305fe95..0000000
--- a/docs/components/modules/ROOT/pages/atmos-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atmos/src/main/docs/atmos-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atmos-component.adoc b/docs/components/modules/ROOT/pages/atmos-component.adoc
new file mode 100644
index 0000000..b23d18d
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atmos-component.adoc
@@ -0,0 +1,167 @@
+= Atmos Component
+
+*Available as of Camel version 2.15*
+
+
+Camel-Atmos is an http://camel.apache.org/[Apache Camel] component that
+allows you to work with ViPR object data services using the
+https://github.com/emcvipr/dataservices-sdk-java[Atmos Client].
+
+[source,java]
+-------------------------------
+from("atmos:foo/get?remotePath=/path").to("mock:test");
+-------------------------------
+
+== Options
+
+
+// component options: START
+The Atmos component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *fullTokenId* (security) | The token id to pass to the Atmos client |  | String
+| *secretKey* (security) | The secret key to pass to the Atmos client |  | String
+| *uri* (advanced) | The URI of the server for the Atmos client to connect to |  | String
+| *sslValidation* (security) | Whether the Atmos client should perform SSL validation | false | boolean
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+// endpoint options: START
+The Atmos endpoint is configured using URI syntax:
+
+----
+atmos:name/operation
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (2 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *name* | Atmos name |  | String
+| *operation* | *Required* Operation to perform |  | AtmosOperation
+|===
+
+
+==== Query Parameters (12 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *enableSslValidation* (common) | Atmos SSL validation | false | boolean
+| *fullTokenId* (common) | Atmos client fullTokenId |  | String
+| *localPath* (common) | Local path to put files |  | String
+| *newRemotePath* (common) | New path on Atmos when moving files |  | String
+| *query* (common) | Search query on Atmos |  | String
+| *remotePath* (common) | Where to put files on Atmos |  | String
+| *secretKey* (common) | Atmos shared secret |  | String
+| *uri* (common) | Atomos server uri |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atmos.enabled* | Enable atmos component | true | Boolean
+| *camel.component.atmos.full-token-id* | The token id to pass to the Atmos client |  | String
+| *camel.component.atmos.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.atmos.secret-key* | The secret key to pass to the Atmos client |  | String
+| *camel.component.atmos.ssl-validation* | Whether the Atmos client should perform SSL validation | false | Boolean
+| *camel.component.atmos.uri* | The URI of the server for the Atmos client to connect to |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+== Dependencies
+
+To use Atmos in your camel routes you need to add the dependency
+on *camel-atmos* which implements this data format.
+
+If you use maven you could just add the following to your pom.xml,
+substituting the version number for the latest & greatest release (see
+the download page for the latest versions).
+
+[source,xml]
+----------------------------------------------------------
+<dependency>
+  <groupId>org.apache.camel</groupId>
+  <artifactId>camel-atmos</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----------------------------------------------------------
+
+[[Atmos-Integrations]]
+
+== Integrations
+
+When you look at atmos integrations, there is one type of consumer, 
+GetConsumer, which is a type of ScheduledPollConsumer. 
+
+* `Get`
+
+Whereas there are 4 types of producers which are 
+
+* `Get` 
+* `Del` 
+* `Move`
+* `Put`
+
+== Examples
+
+These example are taken from tests:
+
+[source,java]
+-------------------------------
+from("atmos:foo/get?remotePath=/path").to("mock:test");
+-------------------------------
+
+Here, this is a consumer example.
+`remotePath` represents the path from where the data will
+be read and passes the camel exchange to regarding producer
+Underneath, this component uses atmos client API for this and
+every other operations.
+
+[source,java]
+-------------------------------
+from("direct:start")
+.to("atmos://get?remotePath=/dummy/dummy.txt")
+.to("mock:result");
+-------------------------------
+
+Here, this a producer sample.
+`remotePath` represents the path where the operations occur
+on ViPR object data service. In producers, operations(`Get`,`Del`,
+`Move`,`Put`) run on ViPR object data services and results are set 
+on headers of camel exchange.
+
+Regarding the operations, the following headers are set on camel
+exhange
+
+[source,java]
+-------------------------------
+DOWNLOADED_FILE, DOWNLOADED_FILES, UPLOADED_FILE, UPLOADED_FILES, FOUND_FILES, DELETED_PATH, MOVED_PATH;
+-------------------------------
diff --git a/docs/components/modules/ROOT/pages/atmosphere-websocket-component.adoc b/docs/components/modules/ROOT/pages/atmosphere-websocket-component.adoc
deleted file mode 120000
index 5a375b8..0000000
--- a/docs/components/modules/ROOT/pages/atmosphere-websocket-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atmosphere-websocket/src/main/docs/atmosphere-websocket-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atmosphere-websocket-component.adoc b/docs/components/modules/ROOT/pages/atmosphere-websocket-component.adoc
new file mode 100644
index 0000000..fb46053
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atmosphere-websocket-component.adoc
@@ -0,0 +1,208 @@
+= Atmosphere Websocket Component
+
+*Available as of Camel version 2.14*
+
+
+The Atmosphere-Websocket component provides Websocket
+based endpoints for a servlet communicating with
+external clients over Websocket (as a servlet accepting websocket
+connections from external clients). +
+The component uses the xref:servlet-component.adoc[SERVLET] component and uses
+the https://github.com/Atmosphere/atmosphere[Atmosphere] library to
+support the Websocket transport in various Servlet containers (e..g.,
+Jetty, Tomcat, ...).
+
+Unlike the
+xref:websocket-component.adoc[Websocket]
+component that starts the embedded Jetty server, this component uses the
+servlet provider of the container.
+
+Maven users will need to add the following dependency to
+their `pom.xml` for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-atmosphere-websocket</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== Atmosphere-Websocket Options
+
+
+
+// component options: START
+The Atmosphere Websocket component supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *servletName* (consumer) | Default name of servlet to use. The default name is CamelServlet. | CamelServlet | String
+| *httpRegistry* (consumer) | To use a custom org.apache.camel.component.servlet.HttpRegistry. |  | HttpRegistry
+| *attachmentMultipart Binding* (consumer) | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | boolean
+| *fileNameExtWhitelist* (consumer) | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. |  | String
+| *httpBinding* (advanced) | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. |  | HttpBinding
+| *httpConfiguration* (advanced) | To use the shared HttpConfiguration as base configuration. |  | HttpConfiguration
+| *allowJavaSerialized Object* (advanced) | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | boolean
+| *headerFilterStrategy* (filter) | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The Atmosphere Websocket endpoint is configured using URI syntax:
+
+----
+atmosphere-websocket:servicePath
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *servicePath* | *Required* Name of websocket endpoint |  | String
+|===
+
+
+==== Query Parameters (38 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *chunked* (common) | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | boolean
+| *disableStreamCache* (common) | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persis [...]
+| *headerFilterStrategy* (common) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
+| *sendToAll* (common) | Whether to send to all (broadcast) or send to a single receiver. | false | boolean
+| *transferException* (common) | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the in [...]
+| *useStreaming* (common) | To enable streaming to send data as multiple text fragments. | false | boolean
+| *httpBinding* (common) | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. |  | HttpBinding
+| *async* (consumer) | Configure the consumer to work in async mode | false | boolean
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *httpMethodRestrict* (consumer) | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. |  | String
+| *matchOnUriPrefix* (consumer) | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | boolean
+| *responseBufferSize* (consumer) | To use a custom buffer size on the javax.servlet.ServletResponse. |  | Integer
+| *servletName* (consumer) | Name of the servlet to use | CamelServlet | String
+| *attachmentMultipartBinding* (consumer) | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | boolean
+| *eagerCheckContentAvailable* (consumer) | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *fileNameExtWhitelist* (consumer) | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. |  | String
+| *optionsEnabled* (consumer) | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | boolean
+| *traceEnabled* (consumer) | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | boolean
+| *bridgeEndpoint* (producer) | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | boolean
+| *connectionClose* (producer) | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | boolean
+| *copyHeaders* (producer) | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | boolean
+| *httpMethod* (producer) | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. |  | HttpMethods
+| *ignoreResponseBody* (producer) | If this option is true, The http producer won't read response body and cache the input stream | false | boolean
+| *preserveHostHeader* (producer) | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | boolean
+| *throwExceptionOnFailure* (producer) | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | boolean
+| *cookieHandler* (producer) | Configure a cookie handler to maintain a HTTP session |  | CookieHandler
+| *okStatusCodeRange* (producer) | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | 200-299 | String
+| *urlRewrite* (producer) | *Deprecated* Refers to a custom org.apache.camel.component.http.UrlRewrite which allows you to rewrite urls when you bridge/proxy endpoints. See more details at http://camel.apache.org/urlrewrite.html |  | UrlRewrite
+| *mapHttpMessageBody* (advanced) | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | boolean
+| *mapHttpMessageFormUrl EncodedBody* (advanced) | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | boolean
+| *mapHttpMessageHeaders* (advanced) | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | boolean
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *proxyAuthScheme* (proxy) | Proxy authentication scheme to use |  | String
+| *proxyHost* (proxy) | Proxy hostname to use |  | String
+| *proxyPort* (proxy) | Proxy port to use |  | int
+| *authHost* (security) | Authentication host to use with NTML |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atmosphere-websocket.allow-java-serialized-object* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | Boolean
+| *camel.component.atmosphere-websocket.attachment-multipart-binding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | Boolean
+| *camel.component.atmosphere-websocket.enabled* | Enable atmosphere-websocket component | true | Boolean
+| *camel.component.atmosphere-websocket.file-name-ext-whitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. |  | String
+| *camel.component.atmosphere-websocket.header-filter-strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type. |  | String
+| *camel.component.atmosphere-websocket.http-binding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. The option is a org.apache.camel.http.common.HttpBinding type. |  | String
+| *camel.component.atmosphere-websocket.http-configuration* | To use the shared HttpConfiguration as base configuration. The option is a org.apache.camel.http.common.HttpConfiguration type. |  | String
+| *camel.component.atmosphere-websocket.http-registry* | To use a custom org.apache.camel.component.servlet.HttpRegistry. The option is a org.apache.camel.component.servlet.HttpRegistry type. |  | String
+| *camel.component.atmosphere-websocket.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.atmosphere-websocket.servlet-name* | Default name of servlet to use. The default name is CamelServlet. | CamelServlet | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+== URI Format
+
+[source,java]
+-----------------------------------------------
+atmosphere-websocket:///relative path[?options]
+-----------------------------------------------
+
+== Reading and Writing Data over Websocket
+
+An atmopshere-websocket endpoint can either write data to the socket or
+read from the socket, depending on whether the endpoint is configured as
+the producer or the consumer, respectively.
+
+== Configuring URI to Read or Write Data
+
+In the route below, Camel will read from the specified websocket
+connection.
+
+[source,java]
+-------------------------------------------
+from("atmosphere-websocket:///servicepath")
+        .to("direct:next");
+-------------------------------------------
+
+And the equivalent Spring sample:
+
+[source,xml]
+------------------------------------------------------------
+<camelContext xmlns="http://camel.apache.org/schema/spring">
+  <route>
+    <from uri="atmosphere-websocket:///servicepath"/>
+    <to uri="direct:next"/>
+  </route>
+</camelContext>
+------------------------------------------------------------
+
+In the route below, Camel will read from the specified websocket
+connection.
+
+[source,java]
+---------------------------------------------------
+from("direct:next")
+        .to("atmosphere-websocket:///servicepath");
+---------------------------------------------------
+
+And the equivalent Spring sample:
+
+[source,xml]
+------------------------------------------------------------
+<camelContext xmlns="http://camel.apache.org/schema/spring">
+  <route>
+    <from uri="direct:next"/>
+    <to uri="atmosphere-websocket:///servicepath"/>
+  </route>
+</camelContext>
+------------------------------------------------------------
+
+ 
diff --git a/docs/components/modules/ROOT/pages/atom-component.adoc b/docs/components/modules/ROOT/pages/atom-component.adoc
deleted file mode 120000
index 6cede47..0000000
--- a/docs/components/modules/ROOT/pages/atom-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atom/src/main/docs/atom-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atom-component.adoc b/docs/components/modules/ROOT/pages/atom-component.adoc
new file mode 100644
index 0000000..837fa48
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atom-component.adoc
@@ -0,0 +1,159 @@
+= Atom Component
+
+*Available as of Camel version 1.2*
+
+
+The Atom component is used for polling Atom feeds.
+
+Camel will poll the feed every 60 seconds by default. +
+ *Note:* The component currently only supports polling (consuming)
+feeds.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-atom</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== URI format
+
+[source,java]
+------------------------
+atom://atomUri[?options]
+------------------------
+
+Where *atomUri* is the URI to the Atom feed to poll.
+
+== Options
+
+
+// component options: START
+The Atom component has no options.
+// component options: END
+
+
+
+// endpoint options: START
+The Atom endpoint is configured using URI syntax:
+
+----
+atom:feedUri
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *feedUri* | *Required* The URI to the feed to poll. |  | String
+|===
+
+
+==== Query Parameters (27 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *feedHeader* (consumer) | Sets whether to add the feed object as a header | true | boolean
+| *filter* (consumer) | Sets whether to use filtering or not of the entries. | true | boolean
+| *lastUpdate* (consumer) | Sets the timestamp to be used for filtering entries from the atom feeds. This options is only in conjunction with the splitEntries. |  | Date
+| *password* (consumer) | Sets the password to be used for basic authentication when polling from a HTTP feed |  | String
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *sortEntries* (consumer) | Sets whether to sort entries by published date. Only works when splitEntries = true. | false | boolean
+| *splitEntries* (consumer) | Sets whether or not entries should be sent individually or whether the entire feed should be sent as a single message | true | boolean
+| *throttleEntries* (consumer) | Sets whether all entries identified in a single feed poll should be delivered immediately. If true, only one entry is processed per consumer.delay. Only applicable when splitEntries = true. | true | boolean
+| *username* (consumer) | Sets the username to be used for basic authentication when polling from a HTTP feed |  | String
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atom.enabled* | Enable atom component | true | Boolean
+| *camel.component.atom.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+You can append query options to the URI in the following format,
+`?option=value&option=value&...`
+
+== Exchange data format
+
+Camel will set the In body on the returned `Exchange` with the entries.
+Depending on the `splitEntries` flag Camel will either return one
+`Entry` or a `List<Entry>`.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Option |Value |Behavior
+|`splitEntries` |`true` |Only a single entry from the currently being processed feed is set:
+`exchange.in.body(Entry)`
+
+|`splitEntries` |`false` |The entire list of entries from the feed is set:
+`exchange.in.body(List<Entry>)`
+|=======================================================================
+
+Camel can set the `Feed` object on the In header (see `feedHeader`
+option to disable this):
+
+== Message Headers
+
+Camel atom uses these headers.
+
+[width="100%",cols="10%,90%",options="header",]
+|=======================================================================
+|Header |Description
+|`CamelAtomFeed` |When consuming the `org.apache.abdera.model.Feed` object is set to this
+header.
+|=======================================================================
+
+== Samples
+
+In this sample we poll James Strachan's blog.
+
+[source,java]
+---------------------------------------------------------------------------------
+from("atom://http://macstrac.blogspot.com/feeds/posts/default").to("seda:feeds");
+---------------------------------------------------------------------------------
+
+In this sample we want to filter only good blogs we like to a SEDA
+queue. The sample also shows how to setup Camel standalone, not running
+in any Container or using Spring.
diff --git a/docs/components/modules/ROOT/pages/atomix-map-component.adoc b/docs/components/modules/ROOT/pages/atomix-map-component.adoc
deleted file mode 120000
index 1ace284..0000000
--- a/docs/components/modules/ROOT/pages/atomix-map-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atomix/src/main/docs/atomix-map-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atomix-map-component.adoc b/docs/components/modules/ROOT/pages/atomix-map-component.adoc
new file mode 100644
index 0000000..13ce856
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atomix-map-component.adoc
@@ -0,0 +1,215 @@
+= Atomix Map Component
+
+*Available as of Camel version 2.20*
+
+
+The camel Atomix-Map component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedMap/[Distributed Map] collection.
+
+Maven users will need to add the following dependency to their pom.xml for this component:
+
+[source,java]
+----
+    <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-atomix</artifactId>
+        <version>${camel-version}</version>
+    </dependency>
+----
+
+== URI format
+
+[source,java]
+----
+    atomix-map:mapName
+----
+
+== Options
+
+// component options: START
+The Atomix Map component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (common) | The shared component configuration |  | AtomixMapConfiguration
+| *atomix* (common) | The shared AtomixClient instance |  | AtomixClient
+| *nodes* (common) | The nodes the AtomixClient should connect to |  | List
+| *configurationUri* (common) | The path to the AtomixClient configuration |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Atomix Map endpoint is configured using URI syntax:
+
+----
+atomix-map:resourceName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceName* | *Required* The distributed resource name |  | String
+|===
+
+
+==== Query Parameters (18 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *atomix* (common) | The Atomix instance to use |  | Atomix
+| *configurationUri* (common) | The Atomix configuration uri. |  | String
+| *defaultAction* (common) | The default action. | PUT | Action
+| *key* (common) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
+| *nodes* (common) | The address of the nodes composing the cluster. |  | String
+| *resultHeader* (common) | The header that wil carry the result. |  | String
+| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *ttl* (common) | The resource ttl. |  | long
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
+| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
+| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
+| *readConsistency* (advanced) | The read consistency level. |  | ReadConsistency
+| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
+| *resourceOptions* (advanced) | Local resources configurations |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atomix-map.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
+| *camel.component.atomix-map.configuration-uri* | The path to the AtomixClient configuration |  | String
+| *camel.component.atomix-map.configuration.default-action* | The default action. |  | AtomixMap$Action
+| *camel.component.atomix-map.configuration.key* | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
+| *camel.component.atomix-map.configuration.result-header* | The header that wil carry the result. |  | String
+| *camel.component.atomix-map.configuration.ttl* | The resource ttl. |  | Long
+| *camel.component.atomix-map.enabled* | Whether to enable auto configuration of the atomix-map component. This is enabled by default. |  | Boolean
+| *camel.component.atomix-map.nodes* | The nodes the AtomixClient should connect to |  | List
+| *camel.component.atomix-map.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+== Headers
+
+[width="100%",cols="10%,10%,20%a,60%",options="header",]
+|===
+| Name
+| Type
+| Values
+| Description
+
+| CamelAtomixResourceAction
+| AtomixMap.Action
+| * PUT
+  * PUT_IF_ABSENT
+  * GET
+  * CLEAR
+  * SIZE
+  * CONTAINS_KEY
+  * CONTAINS_VALUE
+  * IS_EMPTY
+  * ENTRY_SET
+  * REMOVE
+  * REPLACE
+  * VALUES
+| The action to perform
+
+| CamelAtomixResourceKey
+| Object
+| -
+| The key to operate on
+
+| CamelAtomixResourceValue
+| Object
+| -
+| The value, if missing In Body is used
+
+| CamelAtomixResourceOldValue
+| Object
+| -
+| The old value
+
+| CamelAtomixResourceTTL
+| String / long
+| -
+| The entry TTL
+
+| CamelAtomixResourceReadConsistency
+| ReadConsistency
+| * ATOMIC
+  * ATOMIC_LEASE
+  * SEQUENTIAL
+  * LOCAL
+| The read consistency level
+
+|===
+
+== Configuring the component to connect to an Atomix cluster
+
+The nodes of the Atomix cluster you want to join can be se at Endpoint or component level (recommended), below some examples:
+
+* *Endpoint:*
++
+[source,xml]
+----
+<beans xmlns="...">
+    <camelContext xmlns="http://camel.apache.org/schema/spring">
+        <from uri="direct:start"/>
+            <to uri="atomix-map:myMap?nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/>
+        </route>
+    </camelContext>
+</beans>
+----
+
+* *Component:*
++
+[source,xml]
+----
+<beans xmlns="...">
+    <bean id="atomix-map" class="org.apache.camel.component.atomix.client.map.AtomixMapComponent">
+        <property name="nodes" value="nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/>
+    </bean>
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring">
+        <from uri="direct:start"/>
+            <to uri="atomix-map:myMap"/>
+        </route>
+    </camelContext>
+</beans>
+----
+
+== Usage examples:
+
+* *PUT an element with TTL of 1 second:*
++
+[source,java]
+----
+FluentProducerTemplate.on(context)
+    .withHeader(AtomixClientConstants.RESOURCE_ACTION, AtomixMap.Action.PUT)
+    .withHeader(AtomixClientConstants.RESOURCE_KEY, key)
+    .withHeader(AtomixClientConstants.RESOURCE_TTL, "1s")
+    .withBody(val)
+    .to("direct:start")
+    .send();
+----
diff --git a/docs/components/modules/ROOT/pages/atomix-messaging-component.adoc b/docs/components/modules/ROOT/pages/atomix-messaging-component.adoc
deleted file mode 120000
index 98d6798..0000000
--- a/docs/components/modules/ROOT/pages/atomix-messaging-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atomix/src/main/docs/atomix-messaging-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atomix-messaging-component.adoc b/docs/components/modules/ROOT/pages/atomix-messaging-component.adoc
new file mode 100644
index 0000000..082f66f
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atomix-messaging-component.adoc
@@ -0,0 +1,111 @@
+= Atomix Messaging Component
+
+*Available as of Camel version 2.20*
+
+
+The camel Atomix-Messaging component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/cluster-communication/direct-messaging[Group Messaging].
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,java]
+----
+    <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-atomix</artifactId>
+        <version>${camel-version}</version>
+    </dependency>
+----
+
+== URI format
+
+[source,java]
+----
+    atomix-messaging:group
+----
+
+// component options: START
+The Atomix Messaging component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (common) | The shared component configuration |  | AtomixMessaging Configuration
+| *atomix* (common) | The shared AtomixClient instance |  | AtomixClient
+| *nodes* (common) | The nodes the AtomixClient should connect to |  | List
+| *configurationUri* (common) | The path to the AtomixClient configuration |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Atomix Messaging endpoint is configured using URI syntax:
+
+----
+atomix-messaging:resourceName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceName* | *Required* The distributed resource name |  | String
+|===
+
+
+==== Query Parameters (19 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *atomix* (common) | The Atomix instance to use |  | Atomix
+| *broadcastType* (common) | The broadcast type. | ALL | BroadcastType
+| *channelName* (common) | The messaging channel name |  | String
+| *configurationUri* (common) | The Atomix configuration uri. |  | String
+| *defaultAction* (common) | The default action. | DIRECT | Action
+| *memberName* (common) | The Atomix Group member name |  | String
+| *nodes* (common) | The address of the nodes composing the cluster. |  | String
+| *resultHeader* (common) | The header that wil carry the result. |  | String
+| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
+| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
+| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
+| *readConsistency* (advanced) | The read consistency level. |  | ReadConsistency
+| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
+| *resourceOptions* (advanced) | Local resources configurations |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atomix-messaging.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
+| *camel.component.atomix-messaging.configuration-uri* | The path to the AtomixClient configuration |  | String
+| *camel.component.atomix-messaging.configuration.broadcast-type* | The broadcast type. |  | AtomixMessaging$ BroadcastType
+| *camel.component.atomix-messaging.configuration.channel-name* | The messaging channel name |  | String
+| *camel.component.atomix-messaging.configuration.default-action* | The default action. |  | AtomixMessaging$Action
+| *camel.component.atomix-messaging.configuration.member-name* | The Atomix Group member name |  | String
+| *camel.component.atomix-messaging.configuration.result-header* | The header that wil carry the result. |  | String
+| *camel.component.atomix-messaging.enabled* | Whether to enable auto configuration of the atomix-messaging component. This is enabled by default. |  | Boolean
+| *camel.component.atomix-messaging.nodes* | The nodes the AtomixClient should connect to |  | List
+| *camel.component.atomix-messaging.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
diff --git a/docs/components/modules/ROOT/pages/atomix-multimap-component.adoc b/docs/components/modules/ROOT/pages/atomix-multimap-component.adoc
deleted file mode 120000
index c46bd6a..0000000
--- a/docs/components/modules/ROOT/pages/atomix-multimap-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atomix/src/main/docs/atomix-multimap-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atomix-multimap-component.adoc b/docs/components/modules/ROOT/pages/atomix-multimap-component.adoc
new file mode 100644
index 0000000..a7a97af
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atomix-multimap-component.adoc
@@ -0,0 +1,109 @@
+= Atomix MultiMap Component
+
+*Available as of Camel version 2.20*
+
+
+The camel Atomix-Multimap component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedMultimap/[Distributed MultiMap] collection.
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,java]
+----
+    <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-atomix</artifactId>
+        <version>${camel-version}</version>
+    </dependency>
+----
+
+== URI format
+
+[source,java]
+----
+    atomix-multimap:multiMapName
+----
+
+// component options: START
+The Atomix MultiMap component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (consumer) | The shared component configuration |  | AtomixMultiMap Configuration
+| *atomix* (consumer) | The shared AtomixClient instance |  | AtomixClient
+| *nodes* (consumer) | The nodes the AtomixClient should connect to |  | List
+| *configurationUri* (consumer) | The path to the AtomixClient configuration |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Atomix MultiMap endpoint is configured using URI syntax:
+
+----
+atomix-multimap:resourceName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceName* | *Required* The distributed resource name |  | String
+|===
+
+
+==== Query Parameters (18 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *atomix* (consumer) | The Atomix instance to use |  | Atomix
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *configurationUri* (consumer) | The Atomix configuration uri. |  | String
+| *defaultAction* (consumer) | The default action. | PUT | Action
+| *key* (consumer) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
+| *nodes* (consumer) | The address of the nodes composing the cluster. |  | String
+| *resultHeader* (consumer) | The header that wil carry the result. |  | String
+| *transport* (consumer) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *ttl* (consumer) | The resource ttl. |  | long
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
+| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
+| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
+| *readConsistency* (advanced) | The read consistency level. |  | ReadConsistency
+| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
+| *resourceOptions* (advanced) | Local resources configurations |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atomix-multimap.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
+| *camel.component.atomix-multimap.configuration-uri* | The path to the AtomixClient configuration |  | String
+| *camel.component.atomix-multimap.configuration.default-action* | The default action. |  | AtomixMultiMap$Action
+| *camel.component.atomix-multimap.configuration.key* | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
+| *camel.component.atomix-multimap.configuration.result-header* | The header that wil carry the result. |  | String
+| *camel.component.atomix-multimap.configuration.ttl* | The resource ttl. |  | Long
+| *camel.component.atomix-multimap.enabled* | Whether to enable auto configuration of the atomix-multimap component. This is enabled by default. |  | Boolean
+| *camel.component.atomix-multimap.nodes* | The nodes the AtomixClient should connect to |  | List
+| *camel.component.atomix-multimap.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
diff --git a/docs/components/modules/ROOT/pages/atomix-queue-component.adoc b/docs/components/modules/ROOT/pages/atomix-queue-component.adoc
deleted file mode 120000
index 8c57aac..0000000
--- a/docs/components/modules/ROOT/pages/atomix-queue-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atomix/src/main/docs/atomix-queue-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atomix-queue-component.adoc b/docs/components/modules/ROOT/pages/atomix-queue-component.adoc
new file mode 100644
index 0000000..84b2b1e
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atomix-queue-component.adoc
@@ -0,0 +1,105 @@
+= Atomix Queue Component
+
+*Available as of Camel version 2.20*
+
+
+The camel Atomix-Queue component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedQueue/[Distributed Queue] collection.
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,java]
+----
+    <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-atomix</artifactId>
+        <version>${camel-version}</version>
+    </dependency>
+----
+
+== URI format
+
+[source,java]
+----
+    atomix-queue:queueName
+----
+
+// component options: START
+The Atomix Queue component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (common) | The shared component configuration |  | AtomixQueue Configuration
+| *atomix* (common) | The shared AtomixClient instance |  | AtomixClient
+| *nodes* (common) | The nodes the AtomixClient should connect to |  | List
+| *configurationUri* (common) | The path to the AtomixClient configuration |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Atomix Queue endpoint is configured using URI syntax:
+
+----
+atomix-queue:resourceName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceName* | *Required* The distributed resource name |  | String
+|===
+
+
+==== Query Parameters (16 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *atomix* (common) | The Atomix instance to use |  | Atomix
+| *configurationUri* (common) | The Atomix configuration uri. |  | String
+| *defaultAction* (common) | The default action. | ADD | Action
+| *nodes* (common) | The address of the nodes composing the cluster. |  | String
+| *resultHeader* (common) | The header that wil carry the result. |  | String
+| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
+| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
+| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
+| *readConsistency* (advanced) | The read consistency level. |  | ReadConsistency
+| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
+| *resourceOptions* (advanced) | Local resources configurations |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atomix-queue.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
+| *camel.component.atomix-queue.configuration-uri* | The path to the AtomixClient configuration |  | String
+| *camel.component.atomix-queue.configuration.default-action* | The default action. |  | AtomixQueue$Action
+| *camel.component.atomix-queue.configuration.result-header* | The header that wil carry the result. |  | String
+| *camel.component.atomix-queue.enabled* | Whether to enable auto configuration of the atomix-queue component. This is enabled by default. |  | Boolean
+| *camel.component.atomix-queue.nodes* | The nodes the AtomixClient should connect to |  | List
+| *camel.component.atomix-queue.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
diff --git a/docs/components/modules/ROOT/pages/atomix-set-component.adoc b/docs/components/modules/ROOT/pages/atomix-set-component.adoc
deleted file mode 120000
index d91ed83..0000000
--- a/docs/components/modules/ROOT/pages/atomix-set-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atomix/src/main/docs/atomix-set-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atomix-set-component.adoc b/docs/components/modules/ROOT/pages/atomix-set-component.adoc
new file mode 100644
index 0000000..7f3e030
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atomix-set-component.adoc
@@ -0,0 +1,107 @@
+= Atomix Set Component
+
+*Available as of Camel version 2.20*
+
+
+The camel Atomix-Set component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedSet/[Distributed Set] collection.
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,java]
+----
+    <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-atomix</artifactId>
+        <version>${camel-version}</version>
+    </dependency>
+----
+
+== URI format
+
+[source,java]
+----
+    atomix-set:setName
+----
+
+// component options: START
+The Atomix Set component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (common) | The shared component configuration |  | AtomixSetConfiguration
+| *atomix* (common) | The shared AtomixClient instance |  | AtomixClient
+| *nodes* (common) | The nodes the AtomixClient should connect to |  | List
+| *configurationUri* (common) | The path to the AtomixClient configuration |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Atomix Set endpoint is configured using URI syntax:
+
+----
+atomix-set:resourceName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceName* | *Required* The distributed resource name |  | String
+|===
+
+
+==== Query Parameters (17 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *atomix* (common) | The Atomix instance to use |  | Atomix
+| *configurationUri* (common) | The Atomix configuration uri. |  | String
+| *defaultAction* (common) | The default action. | ADD | Action
+| *nodes* (common) | The address of the nodes composing the cluster. |  | String
+| *resultHeader* (common) | The header that wil carry the result. |  | String
+| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *ttl* (common) | The resource ttl. |  | long
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
+| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
+| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
+| *readConsistency* (advanced) | The read consistency level. |  | ReadConsistency
+| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
+| *resourceOptions* (advanced) | Local resources configurations |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atomix-set.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
+| *camel.component.atomix-set.configuration-uri* | The path to the AtomixClient configuration |  | String
+| *camel.component.atomix-set.configuration.default-action* | The default action. |  | AtomixSet$Action
+| *camel.component.atomix-set.configuration.result-header* | The header that wil carry the result. |  | String
+| *camel.component.atomix-set.configuration.ttl* | The resource ttl. |  | Long
+| *camel.component.atomix-set.enabled* | Whether to enable auto configuration of the atomix-set component. This is enabled by default. |  | Boolean
+| *camel.component.atomix-set.nodes* | The nodes the AtomixClient should connect to |  | List
+| *camel.component.atomix-set.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
diff --git a/docs/components/modules/ROOT/pages/atomix-value-component.adoc b/docs/components/modules/ROOT/pages/atomix-value-component.adoc
deleted file mode 120000
index 7c292a8..0000000
--- a/docs/components/modules/ROOT/pages/atomix-value-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-atomix/src/main/docs/atomix-value-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/atomix-value-component.adoc b/docs/components/modules/ROOT/pages/atomix-value-component.adoc
new file mode 100644
index 0000000..7a52b90
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/atomix-value-component.adoc
@@ -0,0 +1,107 @@
+= Atomix Value Component
+
+*Available as of Camel version 2.20*
+
+
+The camel Atomix-Value component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedValue/[Distributed Value].
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,java]
+----
+    <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-atomix</artifactId>
+        <version>${camel-version}</version>
+    </dependency>
+----
+
+== URI format
+
+[source,java]
+----
+    atomix-value:valueName
+----
+
+// component options: START
+The Atomix Value component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (common) | The shared component configuration |  | AtomixValue Configuration
+| *atomix* (common) | The shared AtomixClient instance |  | AtomixClient
+| *nodes* (common) | The nodes the AtomixClient should connect to |  | List
+| *configurationUri* (common) | The path to the AtomixClient configuration |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Atomix Value endpoint is configured using URI syntax:
+
+----
+atomix-value:resourceName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceName* | *Required* The distributed resource name |  | String
+|===
+
+
+==== Query Parameters (17 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *atomix* (common) | The Atomix instance to use |  | Atomix
+| *configurationUri* (common) | The Atomix configuration uri. |  | String
+| *defaultAction* (common) | The default action. | SET | Action
+| *nodes* (common) | The address of the nodes composing the cluster. |  | String
+| *resultHeader* (common) | The header that wil carry the result. |  | String
+| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *ttl* (common) | The resource ttl. |  | long
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
+| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
+| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
+| *readConsistency* (advanced) | The read consistency level. |  | ReadConsistency
+| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
+| *resourceOptions* (advanced) | Local resources configurations |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.atomix-value.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
+| *camel.component.atomix-value.configuration-uri* | The path to the AtomixClient configuration |  | String
+| *camel.component.atomix-value.configuration.default-action* | The default action. |  | AtomixValue$Action
+| *camel.component.atomix-value.configuration.result-header* | The header that wil carry the result. |  | String
+| *camel.component.atomix-value.configuration.ttl* | The resource ttl. |  | Long
+| *camel.component.atomix-value.enabled* | Whether to enable auto configuration of the atomix-value component. This is enabled by default. |  | Boolean
+| *camel.component.atomix-value.nodes* | The nodes the AtomixClient should connect to |  | List
+| *camel.component.atomix-value.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
diff --git a/docs/components/modules/ROOT/pages/avro-component.adoc b/docs/components/modules/ROOT/pages/avro-component.adoc
deleted file mode 120000
index 198033f..0000000
--- a/docs/components/modules/ROOT/pages/avro-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-avro/src/main/docs/avro-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/avro-component.adoc b/docs/components/modules/ROOT/pages/avro-component.adoc
new file mode 100644
index 0000000..cebd838
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/avro-component.adoc
@@ -0,0 +1,335 @@
+= Avro Component
+
+*Available as of Camel version 2.10*
+
+
+This component provides a dataformat for avro, which allows
+serialization and deserialization of messages using Apache Avro's binary
+dataformat. Moreover, it provides support for Apache Avro's rpc, by
+providing producers and consumers endpoint for using avro over netty or
+http.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-avro</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== Apache Avro Overview
+
+Avro allows you to define message types and a protocol using a json like
+format and then generate java code for the specified types and messages.
+An example of how a schema looks like is below.
+
+[source,xml]
+------------------------------------------------------------------------------------------
+{"namespace": "org.apache.camel.avro.generated",
+ "protocol": "KeyValueProtocol",
+
+ "types": [
+     {"name": "Key", "type": "record",
+      "fields": [
+          {"name": "key",   "type": "string"}
+      ]
+     },
+     {"name": "Value", "type": "record",
+      "fields": [
+          {"name": "value",   "type": "string"}
+      ]
+     }
+ ],
+
+ "messages": {
+     "put": {
+         "request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
+         "response": "null"
+     },
+     "get": {
+         "request": [{"name": "key", "type": "Key"}],
+         "response": "Value"
+     }
+ }
+}
+------------------------------------------------------------------------------------------
+
+You can easily generate classes from a schema, using maven, ant etc.
+More details can be found at the
+http://avro.apache.org/docs/current/[Apache Avro documentation].
+
+However, it doesn't enforce a schema first approach and you can create
+schema for your existing classes. *Since 2.12* you can use existing
+protocol interfaces to make RCP calls. You should use interface for the
+protocol itself and POJO beans or primitive/String classes for parameter
+and result types. Here is an example of the class that corresponds to
+schema above:
+
+[source,java]
+--------------------------------------------------------------
+package org.apache.camel.avro.reflection;
+
+public interface KeyValueProtocol {
+    void put(String key, Value value);
+    Value get(String key);
+}
+
+class Value {
+    private String value;
+    public String getValue() { return value; }
+    public void setValue(String value) { this.value = value; }
+}
+--------------------------------------------------------------
+
+_Note: Existing classes can be used only for RPC (see below), not in
+data format._
+
+== Using the Avro data format
+
+Using the avro data format is as easy as specifying that the class that
+you want to marshal or unmarshal in your route.
+
+[source,xml]
+--------------------------------------------------------------------------------
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+        <route>
+            <from uri="direct:in"/>
+            <marshal>
+                <avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
+            </marshal>
+            <to uri="log:out"/>
+        </route>
+    </camelContext>
+--------------------------------------------------------------------------------
+
+An alternative can be to specify the dataformat inside the context and
+reference it from your route.
+
+[source,xml]
+--------------------------------------------------------------------------------------
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+         <dataFormats>
+            <avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
+        </dataFormats>
+        <route>
+            <from uri="direct:in"/>
+            <marshal><custom ref="avro"/></marshal>
+            <to uri="log:out"/>
+        </route>
+    </camelContext>
+--------------------------------------------------------------------------------------
+
+In the same manner you can umarshal using the avro data format.
+
+== Using Avro RPC in Camel
+
+As mentioned above Avro also provides RPC support over multiple
+transports such as http and netty. Camel provides consumers and
+producers for these two transports.
+
+[source,java]
+----------------------------------------
+avro:[transport]:[host]:[port][?options]
+----------------------------------------
+
+The supported transport values are currently http or netty.
+
+*Since 2.12* you can specify message name right in the URI:
+
+[source,java]
+------------------------------------------------------
+avro:[transport]:[host]:[port][/messageName][?options]
+------------------------------------------------------
+
+For consumers this allows you to have multiple routes attached to the
+same socket. Dispatching to correct route will be done by the avro
+component automatically. Route with no messageName specified (if any)
+will be used as default.
+
+When using camel producers for avro ipc, the "in" message body needs to
+contain the parameters of the operation specified in the avro protocol.
+The response will be added in the body of the "out" message.
+
+In a similar manner when using camel avro consumers for avro ipc, the
+requests parameters will be placed inside the "in" message body of the
+created exchange and once the exchange is processed the body of the
+"out" message will be send as a response.
+
+*Note:* By default consumer parameters are wrapped into array. If you've
+got only one parameter, *since 2.12* you can use `singleParameter` URI
+option to receive it direcly in the "in" message body without array
+wrapping.
+
+== Avro RPC URI Options
+
+
+
+
+
+// component options: START
+The Avro component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | To use a shared AvroConfiguration to configure options once |  | AvroConfiguration
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+// endpoint options: START
+The Avro endpoint is configured using URI syntax:
+
+----
+avro:transport:host:port/messageName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (4 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *transport* | *Required* Transport to use, can be either http or netty |  | AvroTransport
+| *port* | *Required* Port number to use |  | int
+| *host* | *Required* Hostname to use |  | String
+| *messageName* | The name of the message to send. |  | String
+|===
+
+
+==== Query Parameters (10 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *protocol* (common) | Avro protocol to use |  | Protocol
+| *protocolClassName* (common) | Avro protocol to use defined by the FQN class name |  | String
+| *protocolLocation* (common) | Avro protocol location |  | String
+| *reflectionProtocol* (common) | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | boolean
+| *singleParameter* (common) | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | boolean
+| *uriAuthority* (common) | Authority to use (username and password) |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.avro.configuration.host* | Hostname to use |  | String
+| *camel.component.avro.configuration.message-name* | The name of the message to send. |  | String
+| *camel.component.avro.configuration.port* | Port number to use |  | Integer
+| *camel.component.avro.configuration.protocol* | Avro protocol to use |  | Protocol
+| *camel.component.avro.configuration.protocol-class-name* | Avro protocol to use defined by the FQN class name |  | String
+| *camel.component.avro.configuration.protocol-location* | Avro protocol location |  | String
+| *camel.component.avro.configuration.reflection-protocol* | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | Boolean
+| *camel.component.avro.configuration.single-parameter* | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | Boolean
+| *camel.component.avro.configuration.transport* | Transport to use, can be either http or netty |  | AvroTransport
+| *camel.component.avro.configuration.uri-authority* | Authority to use (username and password) |  | String
+| *camel.component.avro.enabled* | Enable avro component | true | Boolean
+| *camel.component.avro.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.dataformat.avro.content-type-header* | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. | false | Boolean
+| *camel.dataformat.avro.enabled* | Enable avro dataformat | true | Boolean
+| *camel.dataformat.avro.instance-class-name* | Class name to use for marshal and unmarshalling |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+== Avro RPC Headers
+
+[width="100%",cols="20%,80%",options="header",]
+|=======================================================================
+|Name |Description
+
+|`CamelAvroMessageName` |The name of the message to send. In consumer overrides message name from
+URI (if any)
+|=======================================================================
+
+== Examples
+
+An example of using camel avro producers via http:
+
+[source,xml]
+---------------------------------------------------------------------------------------------------------------------------
+        <route>
+            <from uri="direct:start"/>
+            <to uri="avro:http:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
+            <to uri="log:avro"/>
+        </route>
+---------------------------------------------------------------------------------------------------------------------------
+
+In the example above you need to fill `CamelAvroMessageName` header.
+*Since 2.12* you can use following syntax to call constant messages:
+
+[source,xml]
+-------------------------------------------------------------------------------------------------------------------------------
+        <route>
+            <from uri="direct:start"/>
+            <to uri="avro:http:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
+            <to uri="log:avro"/>
+        </route>
+-------------------------------------------------------------------------------------------------------------------------------
+
+An example of consuming messages using camel avro consumers via netty:
+
+[source,xml]
+------------------------------------------------------------------------------------------------------------------------------
+        <route>
+            <from uri="avro:netty:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
+            <choice>
+                <when>
+                    <el>${in.headers.CamelAvroMessageName == 'put'}</el>
+                    <process ref="putProcessor"/>
+                </when>
+                <when>
+                    <el>${in.headers.CamelAvroMessageName == 'get'}</el>
+                    <process ref="getProcessor"/>
+                </when>
+            </choice>
+        </route>
+------------------------------------------------------------------------------------------------------------------------------
+
+*Since 2.12* you can set up two distinct routes to perform the same
+task:
+
+[source,xml]
+-------------------------------------------------------------------------------------------------------------------------------------------------------
+        <route>
+            <from uri="avro:netty:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol">
+            <process ref="putProcessor"/>
+        </route>
+        <route>
+            <from uri="avro:netty:localhost:{{avroport}}/get?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol&singleParameter=true"/>
+            <process ref="getProcessor"/>
+        </route>
+-------------------------------------------------------------------------------------------------------------------------------------------------------
+
+In the example above, get takes only one parameter, so `singleParameter`
+is used and `getProcessor` will receive Value class directly in body,
+while `putProcessor` will receive an array of size 2 with String key and
+Value value filled as array contents.
diff --git a/docs/components/modules/ROOT/pages/avro-dataformat.adoc b/docs/components/modules/ROOT/pages/avro-dataformat.adoc
deleted file mode 120000
index 6ff6f5a..0000000
--- a/docs/components/modules/ROOT/pages/avro-dataformat.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-avro/src/main/docs/avro-dataformat.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/avro-dataformat.adoc b/docs/components/modules/ROOT/pages/avro-dataformat.adoc
new file mode 100644
index 0000000..602c49b
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/avro-dataformat.adoc
@@ -0,0 +1,172 @@
+= Avro DataFormat
+
+*Available as of Camel version 2.14*
+
+
+This component provides a dataformat for avro, which allows
+serialization and deserialization of messages using Apache Avro's binary
+dataformat. Moreover, it provides support for Apache Avro's rpc, by
+providing producers and consumers endpoint for using avro over netty or
+http.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-avro</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== Apache Avro Overview
+
+Avro allows you to define message types and a protocol using a json like
+format and then generate java code for the specified types and messages.
+An example of how a schema looks like is below.
+
+[source,xml]
+------------------------------------------------------------------------------------------
+{"namespace": "org.apache.camel.avro.generated",
+ "protocol": "KeyValueProtocol",
+
+ "types": [
+     {"name": "Key", "type": "record",
+      "fields": [
+          {"name": "key",   "type": "string"}
+      ]
+     },
+     {"name": "Value", "type": "record",
+      "fields": [
+          {"name": "value",   "type": "string"}
+      ]
+     }
+ ],
+
+ "messages": {
+     "put": {
+         "request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
+         "response": "null"
+     },
+     "get": {
+         "request": [{"name": "key", "type": "Key"}],
+         "response": "Value"
+     }
+ }
+}
+------------------------------------------------------------------------------------------
+
+You can easily generate classes from a schema, using maven, ant etc.
+More details can be found at the
+http://avro.apache.org/docs/current/[Apache Avro documentation].
+
+However, it doesn't enforce a schema first approach and you can create
+schema for your existing classes. *Since 2.12* you can use existing
+protocol interfaces to make RCP calls. You should use interface for the
+protocol itself and POJO beans or primitive/String classes for parameter
+and result types. Here is an example of the class that corresponds to
+schema above:
+
+[source,java]
+--------------------------------------------------------------
+package org.apache.camel.avro.reflection;
+
+public interface KeyValueProtocol {
+    void put(String key, Value value);
+    Value get(String key);
+}
+
+class Value {
+    private String value;
+    public String getValue() { return value; }
+    public void setValue(String value) { this.value = value; }
+}
+--------------------------------------------------------------
+
+_Note: Existing classes can be used only for RPC (see below), not in
+data format._
+
+== Using the Avro data format
+
+Using the avro data format is as easy as specifying that the class that
+you want to marshal or unmarshal in your route.
+
+[source,xml]
+--------------------------------------------------------------------------------
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+        <route>
+            <from uri="direct:in"/>
+            <marshal>
+                <avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
+            </marshal>
+            <to uri="log:out"/>
+        </route>
+    </camelContext>
+--------------------------------------------------------------------------------
+
+An alternative can be to specify the dataformat inside the context and
+reference it from your route.
+
+[source,xml]
+--------------------------------------------------------------------------------------
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+         <dataFormats>
+            <avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
+        </dataFormats>
+        <route>
+            <from uri="direct:in"/>
+            <marshal><custom ref="avro"/></marshal>
+            <to uri="log:out"/>
+        </route>
+    </camelContext>
+--------------------------------------------------------------------------------------
+
+In the same manner you can umarshal using the avro data format.
+
+
+== Avro Dataformat Options
+
+// dataformat options: START
+The Avro dataformat supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2s,1m,1m,6",options="header"]
+|===
+| Name | Default | Java Type | Description
+| instanceClassName |  | String | Class name to use for marshal and unmarshalling
+| contentTypeHeader | false | Boolean | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc.
+|===
+// dataformat options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.avro.configuration.host* | Hostname to use |  | String
+| *camel.component.avro.configuration.message-name* | The name of the message to send. |  | String
+| *camel.component.avro.configuration.port* | Port number to use |  | Integer
+| *camel.component.avro.configuration.protocol* | Avro protocol to use |  | Protocol
+| *camel.component.avro.configuration.protocol-class-name* | Avro protocol to use defined by the FQN class name |  | String
+| *camel.component.avro.configuration.protocol-location* | Avro protocol location |  | String
+| *camel.component.avro.configuration.reflection-protocol* | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | Boolean
+| *camel.component.avro.configuration.single-parameter* | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | Boolean
+| *camel.component.avro.configuration.transport* | Transport to use, can be either http or netty |  | AvroTransport
+| *camel.component.avro.configuration.uri-authority* | Authority to use (username and password) |  | String
+| *camel.component.avro.enabled* | Enable avro component | true | Boolean
+| *camel.component.avro.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.dataformat.avro.content-type-header* | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. | false | Boolean
+| *camel.dataformat.avro.enabled* | Enable avro dataformat | true | Boolean
+| *camel.dataformat.avro.instance-class-name* | Class name to use for marshal and unmarshalling |  | String
+|===
+// spring-boot-auto-configure options: END
+ND
diff --git a/docs/components/modules/ROOT/pages/aws-cw-component.adoc b/docs/components/modules/ROOT/pages/aws-cw-component.adoc
deleted file mode 120000
index b601601..0000000
--- a/docs/components/modules/ROOT/pages/aws-cw-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-cw-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-cw-component.adoc b/docs/components/modules/ROOT/pages/aws-cw-component.adoc
new file mode 100644
index 0000000..b9c89d0
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-cw-component.adoc
@@ -0,0 +1,206 @@
+[[aws-cw-component]]
+= AWS CloudWatch Component
+
+*Available as of Camel version 2.11*
+
+The CW component allows messages to be sent to an
+http://aws.amazon.com/cloudwatch/[Amazon CloudWatch] metrics. The
+implementation of the Amazon API is provided by
+the http://aws.amazon.com/sdkforjava/[AWS SDK].
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon CloudWatch. More information are available at
+http://aws.amazon.com/cloudwatch/[Amazon CloudWatch].
+
+### URI Format
+
+[source,java]
+----------------------------
+aws-cw://namespace[?options]
+----------------------------
+
+The metrics will be created if they don't already exists. +
+ You can append query options to the URI in the following format,
+`?options=value&option2=value&...`
+
+### URI Options
+
+
+// component options: START
+The AWS CloudWatch component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS CW default configuration |  | CwConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which CW client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS CloudWatch endpoint is configured using URI syntax:
+
+----
+aws-cw:namespace
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *namespace* | *Required* The metric namespace |  | String
+|===
+
+
+==== Query Parameters (11 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonCwClient* (producer) | To use the AmazonCloudWatch as the client |  | AmazonCloudWatch
+| *name* (producer) | The metric name |  | String
+| *proxyHost* (producer) | To define a proxy host when instantiating the CW client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the CW client |  | Integer
+| *region* (producer) | The region in which CW client needs to work |  | String
+| *timestamp* (producer) | The metric timestamp |  | Date
+| *unit* (producer) | The metric unit |  | String
+| *value* (producer) | The metric value |  | Double
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-cw.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-cw.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-cw.configuration.amazon-cw-client* | To use the AmazonCloudWatch as the client |  | AmazonCloudWatch
+| *camel.component.aws-cw.configuration.name* | The metric name |  | String
+| *camel.component.aws-cw.configuration.namespace* | The metric namespace |  | String
+| *camel.component.aws-cw.configuration.proxy-host* | To define a proxy host when instantiating the CW client |  | String
+| *camel.component.aws-cw.configuration.proxy-port* | To define a proxy port when instantiating the CW client |  | Integer
+| *camel.component.aws-cw.configuration.region* | The region in which CW client needs to work |  | String
+| *camel.component.aws-cw.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-cw.configuration.timestamp* | The metric timestamp |  | Date
+| *camel.component.aws-cw.configuration.unit* | The metric unit |  | String
+| *camel.component.aws-cw.configuration.value* | The metric value |  | Double
+| *camel.component.aws-cw.enabled* | Enable aws-cw component | true | Boolean
+| *camel.component.aws-cw.region* | The region in which CW client needs to work |  | String
+| *camel.component.aws-cw.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-cw.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required CW component options
+
+You have to provide the amazonCwClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/cloudwatch/[Amazon's CloudWatch].
+
+### Usage
+
+#### Message headers evaluated by the CW producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsCwMetricName` |`String` |The Amazon CW metric name.
+
+|`CamelAwsCwMetricValue` |`Double` |The Amazon CW metric value.
+
+|`CamelAwsCwMetricUnit` |`String` |The Amazon CW metric unit.
+
+|`CamelAwsCwMetricNamespace` |`String` |The Amazon CW metric namespace.
+
+|`CamelAwsCwMetricTimestamp` |`Date` |The Amazon CW metric timestamp.
+
+|`CamelAwsCwMetricDimensionName` |`String` |*Camel 2.12:* The Amazon CW metric dimension name.
+
+|`CamelAwsCwMetricDimensionValue` |`String` |*Camel 2.12:* The Amazon CW metric dimension value.
+
+|`CamelAwsCwMetricDimensions` |`Map<String, String>` |*Camel 2.12:* A map of dimension names and dimension values.
+|=======================================================================
+
+#### Advanced AmazonCloudWatch configuration
+
+If you need more control over the `AmazonCloudWatch` instance
+configuration you can create your own instance and refer to it from the
+URI:
+
+[source,java]
+-------------------------------------------------
+from("direct:start")
+.to("aws-cw://namepsace?amazonCwClient=#client");
+-------------------------------------------------
+
+The `#client` refers to a `AmazonCloudWatch` in the
+Registry.
+
+For example if your Camel Application is running behind a firewall:
+
+[source,java]
+------------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+------------------------------------------------------------------------------------------
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.10 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-ddb-component.adoc b/docs/components/modules/ROOT/pages/aws-ddb-component.adoc
deleted file mode 120000
index eb9ca1e..0000000
--- a/docs/components/modules/ROOT/pages/aws-ddb-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-ddb-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-ddb-component.adoc b/docs/components/modules/ROOT/pages/aws-ddb-component.adoc
new file mode 100644
index 0000000..bd507be
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-ddb-component.adoc
@@ -0,0 +1,377 @@
+[[aws-ddb-component]]
+= AWS DynamoDB Component
+
+*Available as of Camel version 2.10*
+
+The DynamoDB component supports storing and retrieving data from/to
+http://aws.amazon.com/dynamodb[Amazon's DynamoDB] service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon DynamoDB. More information are available at
+http://aws.amazon.com/dynamodb[Amazon DynamoDB].
+
+### URI Format
+
+[source,java]
+------------------------------
+aws-ddb://domainName[?options]
+------------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS DynamoDB component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS DDB default configuration |  | DdbConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which DDB client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS DynamoDB endpoint is configured using URI syntax:
+
+----
+aws-ddb:tableName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *tableName* | *Required* The name of the table currently worked with. |  | String
+|===
+
+
+==== Query Parameters (13 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonDDBClient* (producer) | To use the AmazonDynamoDB as the client |  | AmazonDynamoDB
+| *consistentRead* (producer) | Determines whether or not strong consistency should be enforced when data is read. | false | boolean
+| *keyAttributeName* (producer) | Attribute name when creating table |  | String
+| *keyAttributeType* (producer) | Attribute type when creating table |  | String
+| *operation* (producer) | What operation to perform | PutItem | DdbOperations
+| *proxyHost* (producer) | To define a proxy host when instantiating the DDB client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the DDB client |  | Integer
+| *readCapacity* (producer) | The provisioned throughput to reserve for reading resources from your table |  | Long
+| *region* (producer) | The region in which DDB client needs to work |  | String
+| *writeCapacity* (producer) | The provisioned throughput to reserved for writing resources to your table |  | Long
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-ddb.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ddb.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ddb.configuration.amazon-d-d-b-client* | To use the AmazonDynamoDB as the client |  | AmazonDynamoDB
+| *camel.component.aws-ddb.configuration.consistent-read* | Determines whether or not strong consistency should be enforced when data is read. | false | Boolean
+| *camel.component.aws-ddb.configuration.key-attribute-name* | Attribute name when creating table |  | String
+| *camel.component.aws-ddb.configuration.key-attribute-type* | Attribute type when creating table |  | String
+| *camel.component.aws-ddb.configuration.operation* | What operation to perform |  | DdbOperations
+| *camel.component.aws-ddb.configuration.proxy-host* | To define a proxy host when instantiating the DDB client |  | String
+| *camel.component.aws-ddb.configuration.proxy-port* | To define a proxy port when instantiating the DDB client |  | Integer
+| *camel.component.aws-ddb.configuration.read-capacity* | The provisioned throughput to reserve for reading resources from your table |  | Long
+| *camel.component.aws-ddb.configuration.region* | The region in which DDB client needs to work |  | String
+| *camel.component.aws-ddb.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-ddb.configuration.table-name* | The name of the table currently worked with. |  | String
+| *camel.component.aws-ddb.configuration.write-capacity* | The provisioned throughput to reserved for writing resources to your table |  | Long
+| *camel.component.aws-ddb.enabled* | Enable aws-ddb component | true | Boolean
+| *camel.component.aws-ddb.region* | The region in which DDB client needs to work |  | String
+| *camel.component.aws-ddb.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-ddb.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required DDB component options
+
+You have to provide the amazonDDBClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/dynamodb[Amazon's DynamoDB].
+
+### Usage
+
+#### Message headers evaluated by the DDB producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbBatchItems` |`Map<String, KeysAndAttributes>` |A map of the table name and corresponding items to get by primary key.
+
+|`CamelAwsDdbTableName` |`String` |Table Name for this operation.
+
+|`CamelAwsDdbKey` |`Key` |The primary key that uniquely identifies each item in a table. *From Camel 2.16.0 the type of this header is Map<String,
+AttributeValue> and not Key*
+
+|`CamelAwsDdbReturnValues` |`String` |Use this parameter if you want to get the attribute name-value pairs
+before or after they are modified(NONE, ALL_OLD, UPDATED_OLD, ALL_NEW,
+UPDATED_NEW).
+
+|`CamelAwsDdbUpdateCondition` |`Map<String, ExpectedAttributeValue>` |Designates an attribute for a conditional modification.
+
+|`CamelAwsDdbAttributeNames` |`Collection<String>` |If attribute names are not specified then all attributes will be
+returned.
+
+|`CamelAwsDdbConsistentRead` |`Boolean` |If set to true, then a consistent read is issued, otherwise eventually
+consistent is used.
+
+|`CamelAwsDdbIndexName` |`String` |If set will be used as Secondary Index for Query operation.
+
+|`CamelAwsDdbItem` |`Map<String, AttributeValue>` |A map of the attributes for the item, and must include the primary key
+values that define the item.
+
+|`CamelAwsDdbExactCount` |`Boolean` |If set to true, Amazon DynamoDB returns a total number of items that
+match the query parameters, instead of a list of the matching items and
+their attributes. *From Camel 2.16.0 this header doesn't exist anymore.*
+
+|`CamelAwsDdbKeyConditions` |`Map<String, Condition>` |*From Camel 2.16.0*. This header specify the selection criteria for the
+query, and merge together the two old headers *CamelAwsDdbHashKeyValue*
+and *CamelAwsDdbScanRangeKeyCondition*
+
+|`CamelAwsDdbStartKey` |`Key` |Primary key of the item from which to continue an earlier query.
+
+|`CamelAwsDdbHashKeyValue` |`AttributeValue` |Value of the hash component of the composite primary key.
+*From Camel 2.16.0 this header doesn't exist anymore.*
+
+|`CamelAwsDdbLimit` |`Integer` |The maximum number of items to return.
+
+|`CamelAwsDdbScanRangeKeyCondition` |`Condition` |A container for the attribute values and comparison operators to use for
+the query.*From Camel 2.16.0 this header doesn't exist anymore.*
+
+|`CamelAwsDdbScanIndexForward` |`Boolean` |Specifies forward or backward traversal of the index.
+
+|`CamelAwsDdbScanFilter` |`Map<String, Condition>` |Evaluates the scan results and returns only the desired values.
+
+|`CamelAwsDdbUpdateValues` |`Map<String, AttributeValueUpdate>` |Map of attribute name to the new value and action for the update.
+|=======================================================================
+
+#### Message headers set during BatchGetItems operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbBatchResponse` |`Map<String,BatchResponse>` |Table names and the respective item attributes from the tables.
+
+|`CamelAwsDdbUnprocessedKeys` |`Map<String,KeysAndAttributes>` |Contains a map of tables and their respective keys that were not
+processed with the current response.
+|=======================================================================
+
+#### Message headers set during DeleteItem operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
+|=======================================================================
+
+#### Message headers set during DeleteTable operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbProvisionedThroughput`| | 
+
+|`ProvisionedThroughputDescription` | |The value of the ProvisionedThroughput property for this table
+
+|`CamelAwsDdbCreationDate` |`Date` |Creation DateTime of this table.
+
+|`CamelAwsDdbTableItemCount` |`Long` |Item count for this table.
+
+|`CamelAwsDdbKeySchema` |`KeySchema` |The KeySchema that identifies the primary key for this table. 
+*From Camel 2.16.0 the type of this header is List<KeySchemaElement> and not KeySchema*
+
+|`CamelAwsDdbTableName` |`String` |The table name. 
+
+|`CamelAwsDdbTableSize` |`Long` |The table size in bytes. 
+
+|`CamelAwsDdbTableStatus` |`String` |The status of the table: CREATING, UPDATING, DELETING, ACTIVE
+|=======================================================================
+
+#### Message headers set during DescribeTable operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbProvisionedThroughput` |{{ProvisionedThroughputDescription}} |The value of the ProvisionedThroughput property for this table
+
+|`CamelAwsDdbCreationDate` |`Date` |Creation DateTime of this table.
+
+|`CamelAwsDdbTableItemCount` |`Long` |Item count for this table.
+
+|`CamelAwsDdbKeySchema` |{{KeySchema}} |The KeySchema that identifies the primary key for this table.
+*From Camel 2.16.0 the type of this header is List<KeySchemaElement> and
+not KeySchema*
+
+|`CamelAwsDdbTableName` |`String` |The table name.
+
+|`CamelAwsDdbTableSize` |`Long` |The table size in bytes.
+
+|`CamelAwsDdbTableStatus` |`String` |The status of the table: CREATING, UPDATING, DELETING, ACTIVE
+
+|`CamelAwsDdbReadCapacity` |`Long` |ReadCapacityUnits property of this table.
+
+|`CamelAwsDdbWriteCapacity` |`Long` |WriteCapacityUnits property of this table.
+|=======================================================================
+
+#### Message headers set during GetItem operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
+
+|=======================================================================
+
+#### Message headers set during PutItem operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
+
+|=======================================================================
+
+#### Message headers set during Query operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbItems` |`List<java.util.Map<String,AttributeValue>>` |The list of attributes returned by the operation.
+
+|`CamelAwsDdbLastEvaluatedKey` |`Key` |Primary key of the item where the query operation stopped, inclusive of
+the previous result set.
+
+|`CamelAwsDdbConsumedCapacity` |`Double` |The number of Capacity Units of the provisioned throughput of the table
+consumed during the operation.
+
+|`CamelAwsDdbCount` |`Integer` |Number of items in the response.
+|=======================================================================
+
+#### Message headers set during Scan operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbItems` |`List<java.util.Map<String,AttributeValue>>` |The list of attributes returned by the operation.
+
+|`CamelAwsDdbLastEvaluatedKey` |`Key` |Primary key of the item where the query operation stopped, inclusive of
+the previous result set.
+
+|`CamelAwsDdbConsumedCapacity` |`Double` |The number of Capacity Units of the provisioned throughput of the table
+consumed during the operation.
+
+|`CamelAwsDdbCount` |`Integer` |Number of items in the response.
+
+|`CamelAwsDdbScannedCount` |`Integer` |Number of items in the complete scan before any filters are applied.
+|=======================================================================
+
+#### Message headers set during UpdateItem operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
+
+|=======================================================================
+
+#### Advanced AmazonDynamoDB configuration
+
+If you need more control over the `AmazonDynamoDB` instance
+configuration you can create your own instance and refer to it from the
+URI:
+
+[source,java]
+----------------------------------------------------
+from("direct:start")
+.to("aws-ddb://domainName?amazonDDBClient=#client");
+----------------------------------------------------
+
+The `#client` refers to a `AmazonDynamoDB` in the
+Registry.
+
+For example if your Camel Application is running behind a firewall:
+
+[source,java]
+--------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+AmazonDynamoDB client = new AmazonDynamoDBClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+--------------------------------------------------------------------------------------
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.10 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-ddbstream-component.adoc b/docs/components/modules/ROOT/pages/aws-ddbstream-component.adoc
deleted file mode 120000
index 9fe75b6..0000000
--- a/docs/components/modules/ROOT/pages/aws-ddbstream-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-ddbstream-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-ddbstream-component.adoc b/docs/components/modules/ROOT/pages/aws-ddbstream-component.adoc
new file mode 100644
index 0000000..83ece5a
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-ddbstream-component.adoc
@@ -0,0 +1,233 @@
+[[aws-ddbstream-component]]
+= AWS DynamoDB Streams Component
+
+*Available as of Camel version 2.17*
+
+The DynamoDB Stream component supports receiving messages from
+Amazon DynamoDB Stream service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon DynamoDB Streams. More information are available
+at http://aws.amazon.com/dynamodb/[AWS DynamoDB]
+
+### URI Format
+
+[source,java]
+------------------------------------
+aws-ddbstream://table-name[?options]
+------------------------------------
+
+The stream needs to be created prior to it being used. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS DynamoDB Streams component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS DDB stream default configuration |  | DdbStreamConfiguration
+| *accessKey* (consumer) | Amazon AWS Access Key |  | String
+| *secretKey* (consumer) | Amazon AWS Secret Key |  | String
+| *region* (consumer) | Amazon AWS Region |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+// endpoint options: START
+The AWS DynamoDB Streams endpoint is configured using URI syntax:
+
+----
+aws-ddbstream:tableName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *tableName* | *Required* Name of the dynamodb table |  | String
+|===
+
+
+==== Query Parameters (28 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonDynamoDbStreams Client* (consumer) | Amazon DynamoDB client to use for all requests for this endpoint |  | AmazonDynamoDBStreams
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *iteratorType* (consumer) | Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if AT,AFTER_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. | LATEST | ShardIteratorType
+| *maxResultsPerRequest* (consumer) | Maximum number of records that will be fetched in each poll |  | int
+| *proxyHost* (consumer) | To define a proxy host when instantiating the DDBStreams client |  | String
+| *proxyPort* (consumer) | To define a proxy port when instantiating the DDBStreams client |  | Integer
+| *region* (consumer) | The region in which DDBStreams client needs to work |  | String
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *sequenceNumberProvider* (consumer) | Provider for the sequence number when using one of the two ShardIteratorType.AT,AFTER_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number. |  | SequenceNumberProvider
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-ddbstream.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ddbstream.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ddbstream.configuration.amazon-dynamo-db-streams-client* | Amazon DynamoDB client to use for all requests for this endpoint |  | AmazonDynamoDBStreams
+| *camel.component.aws-ddbstream.configuration.iterator-type* | Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if AT,AFTER_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. |  | ShardIteratorType
+| *camel.component.aws-ddbstream.configuration.max-results-per-request* | Maximum number of records that will be fetched in each poll |  | Integer
+| *camel.component.aws-ddbstream.configuration.proxy-host* | To define a proxy host when instantiating the DDBStreams client |  | String
+| *camel.component.aws-ddbstream.configuration.proxy-port* | To define a proxy port when instantiating the DDBStreams client |  | Integer
+| *camel.component.aws-ddbstream.configuration.region* | The region in which DDBStreams client needs to work |  | String
+| *camel.component.aws-ddbstream.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-ddbstream.configuration.sequence-number-provider* | Provider for the sequence number when using one of the two ShardIteratorType.AT,AFTER_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number. |  | SequenceNumberProvider
+| *camel.component.aws-ddbstream.configuration.table-name* | Name of the dynamodb table |  | String
+| *camel.component.aws-ddbstream.enabled* | Enable aws-ddbstream component | true | Boolean
+| *camel.component.aws-ddbstream.region* | Amazon AWS Region |  | String
+| *camel.component.aws-ddbstream.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-ddbstream.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+
+Required DynampDBStream component options
+
+You have to provide the amazonDynamoDbStreamsClient in the
+Registry with proxies and relevant credentials
+configured.
+
+### Sequence Numbers
+
+You can provide a literal string as the sequence number or provide a
+bean in the registry. An example of using the bean would be to save your
+current position in the change feed and restore it on Camel startup.
+
+It is an error to provide a sequence number that is greater than the
+largest sequence number in the describe-streams result, as this will
+lead to the AWS call returning an HTTP 400.
+
+### Batch Consumer
+
+This component implements the Batch Consumer.
+
+This allows you for instance to know how many messages exists in this
+batch and for instance let the Aggregator
+aggregate this number of messages.
+
+### Usage
+
+#### AmazonDynamoDBStreamsClient configuration
+
+You will need to create an instance of AmazonDynamoDBStreamsClient and
+bind it to the registry
+
+[source,java]
+--------------------------------------------------------------------------------------------------------------------
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+Region region = Region.getRegion(Regions.fromName(region));
+region.createClient(AmazonDynamoDBStreamsClient.class, null, clientConfiguration);
+// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain
+
+registry.bind("kinesisClient", client);
+--------------------------------------------------------------------------------------------------------------------
+
+#### Providing AWS Credentials
+
+It is recommended that the credentials are obtained by using the
+http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html[DefaultAWSCredentialsProviderChain]
+that is the default when creating a new ClientConfiguration instance,
+however, a
+different http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProvider.html[AWSCredentialsProvider]
+can be specified when calling createClient(...).
+
+### Coping with Downtime
+
+#### AWS DynamoDB Streams outage of less than 24 hours
+
+The consumer will resume from the last seen sequence number (as
+implemented
+for https://issues.apache.org/jira/browse/CAMEL-9515[CAMEL-9515]), so
+you should receive a flood of events in quick succession, as long as the
+outage did not also include DynamoDB itself.
+
+#### AWS DynamoDB Streams outage of more than 24 hours
+
+Given that AWS only retain 24 hours worth of changes, you will have
+missed change events no matter what mitigations are in place.
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.7 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component +
+ +
diff --git a/docs/components/modules/ROOT/pages/aws-ec2-component.adoc b/docs/components/modules/ROOT/pages/aws-ec2-component.adoc
deleted file mode 120000
index 1891f3c..0000000
--- a/docs/components/modules/ROOT/pages/aws-ec2-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-ec2-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-ec2-component.adoc b/docs/components/modules/ROOT/pages/aws-ec2-component.adoc
new file mode 100644
index 0000000..69e2566
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-ec2-component.adoc
@@ -0,0 +1,172 @@
+[[aws-ec2-component]]
+= AWS EC2 Component
+
+*Available as of Camel version 2.16*
+
+The EC2 component supports create, run, start, stop and terminate
+https://aws.amazon.com/it/ec2/[AWS EC2] instances.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon EC2. More information are available at
+https://aws.amazon.com/it/ec2/[Amazon EC2].
+
+### URI Format
+
+[source,java]
+-------------------------
+aws-ec2://label[?options]
+-------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS EC2 component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS EC2 default configuration |  | EC2Configuration
+| *region* (producer) | The region in which EC2 client needs to work |  | String
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS EC2 endpoint is configured using URI syntax:
+
+----
+aws-ec2:label
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *label* | *Required* Logical name |  | String
+|===
+
+
+==== Query Parameters (8 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *amazonEc2Client* (producer) | To use a existing configured AmazonEC2Client as client |  | AmazonEC2Client
+| *operation* (producer) | *Required* The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags |  | EC2Operations
+| *proxyHost* (producer) | To define a proxy host when instantiating the EC2 client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the EC2 client |  | Integer
+| *region* (producer) | The region in which EC2 client needs to work |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-ec2.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ec2.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ec2.configuration.amazon-ec2-client* | To use a existing configured AmazonEC2Client as client |  | AmazonEC2Client
+| *camel.component.aws-ec2.configuration.operation* | The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags |  | EC2Operations
+| *camel.component.aws-ec2.configuration.proxy-host* | To define a proxy host when instantiating the EC2 client |  | String
+| *camel.component.aws-ec2.configuration.proxy-port* | To define a proxy port when instantiating the EC2 client |  | Integer
+| *camel.component.aws-ec2.configuration.region* | The region in which EC2 client needs to work |  | String
+| *camel.component.aws-ec2.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-ec2.enabled* | Enable aws-ec2 component | true | Boolean
+| *camel.component.aws-ec2.region* | The region in which EC2 client needs to work |  | String
+| *camel.component.aws-ec2.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-ec2.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required EC2 component options
+
+You have to provide the amazonEc2Client in the
+Registry or your accessKey and secretKey to access
+the https://aws.amazon.com/it/ec2/[Amazon EC2] service.
+
+### Usage
+
+#### Message headers evaluated by the EC2 producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsEC2ImageId` |`String` |An image ID of the AWS marketplace
+
+|`CamelAwsEC2InstanceType` |com.amazonaws.services.ec2.model.InstanceType |The instance type we want to create and run
+
+|`CamelAwsEC2Operation` |`String` |The operation we want to perform
+
+|`CamelAwsEC2InstanceMinCount` |`Int` |The mininum number of instances we want to run.
+
+|`CamelAwsEC2InstanceMaxCount` |`Int` |The maximum number of instances we want to run.
+
+|`CamelAwsEC2InstanceMonitoring` |Boolean |Define if we want the running instances to be monitored
+
+|`CamelAwsEC2InstanceEbsOptimized` |`Boolean` |Define if the creating instance is optimized for EBS I/O.
+
+|`CamelAwsEC2InstanceSecurityGroups` |Collection |The security groups to associate to the instances
+
+|`CamelAwsEC2InstancesIds` |`Collection` |A collection of instances IDS to execute start, stop, describe and
+terminate operations on.
+
+|`CamelAwsEC2InstancesTags` |`Collection` |A collection of tags to add or remove from EC2 resources
+|=======================================================================
+
+Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.16 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-iam-component.adoc b/docs/components/modules/ROOT/pages/aws-iam-component.adoc
deleted file mode 120000
index 5139798..0000000
--- a/docs/components/modules/ROOT/pages/aws-iam-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-iam-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-iam-component.adoc b/docs/components/modules/ROOT/pages/aws-iam-component.adoc
new file mode 100644
index 0000000..e6e75e5
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-iam-component.adoc
@@ -0,0 +1,172 @@
+[[aws-iam-component]]
+= AWS IAM Component
+
+*Available as of Camel version 2.23*
+
+The KMS component supports create, run, start, stop and terminate
+https://aws.amazon.com/it/iam/[AWS IAM] instances.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon IAM. More information are available at
+https://aws.amazon.com/it/iam/[Amazon IAM].
+
+### URI Format
+
+[source,java]
+-------------------------
+aws-kms://label[?options]
+-------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS IAM component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS IAM default configuration |  | IAMConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which IAM client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS IAM endpoint is configured using URI syntax:
+
+----
+aws-iam:label
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *label* | *Required* Logical name |  | String
+|===
+
+
+==== Query Parameters (8 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *iamClient* (producer) | To use a existing configured AWS IAM as client |  | AmazonIdentity ManagementClient
+| *operation* (producer) | *Required* The operation to perform |  | IAMOperations
+| *proxyHost* (producer) | To define a proxy host when instantiating the KMS client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the KMS client |  | Integer
+| *region* (producer) | The region in which KMS client needs to work |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-iam.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-iam.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-iam.configuration.iam-client* | To use a existing configured AWS IAM as client |  | AmazonIdentity ManagementClient
+| *camel.component.aws-iam.configuration.operation* | The operation to perform |  | IAMOperations
+| *camel.component.aws-iam.configuration.proxy-host* | To define a proxy host when instantiating the KMS client |  | String
+| *camel.component.aws-iam.configuration.proxy-port* | To define a proxy port when instantiating the KMS client |  | Integer
+| *camel.component.aws-iam.configuration.region* | The region in which KMS client needs to work |  | String
+| *camel.component.aws-iam.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-iam.enabled* | Whether to enable auto configuration of the aws-iam component. This is enabled by default. |  | Boolean
+| *camel.component.aws-iam.region* | The region in which IAM client needs to work |  | String
+| *camel.component.aws-iam.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-iam.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required IAM component options
+
+You have to provide the amazonKmsClient in the
+Registry or your accessKey and secretKey to access
+the https://aws.amazon.com/it/iam/[Amazon IAM] service.
+
+### Usage
+
+#### Message headers evaluated by the IAM producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsIAMOperation` |`String` |The operation we want to perform
+
+|`CamelAwsIAMUsername` |`String` |The username for the user you want to manage
+
+|`CamelAwsIAMAccessKeyID` |`String` |The accessKey you want to manage
+
+|`CamelAwsIAMAccessKeyStatus` |`String` |The Status of the AccessKey you want to set, possible value are active and inactive
+|=======================================================================
+
+#### IAM Producer operations
+
+Camel-AWS IAM component provides the following operation on the producer side:
+
+- listAccessKeys
+- createUser
+- deleteUser
+- listUsers
+- getUser
+- createAccessKey
+- deleteAccessKey
+- updateAccessKey
+
+Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.16 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-kinesis-component.adoc b/docs/components/modules/ROOT/pages/aws-kinesis-component.adoc
deleted file mode 120000
index 061a7f9..0000000
--- a/docs/components/modules/ROOT/pages/aws-kinesis-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-kinesis-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-kinesis-component.adoc b/docs/components/modules/ROOT/pages/aws-kinesis-component.adoc
new file mode 100644
index 0000000..be0b591
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-kinesis-component.adoc
@@ -0,0 +1,261 @@
+[[aws-kinesis-component]]
+= AWS Kinesis Component
+
+*Available as of Camel version 2.17*
+
+The Kinesis component supports receiving messages from and sending messages to Amazon Kinesis
+service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon Kinesis. More information are available
+at http://aws.amazon.com/kinesis/[AWS Kinesis]
+
+### URI Format
+
+[source,java]
+-----------------------------------
+aws-kinesis://stream-name[?options]
+-----------------------------------
+
+The stream needs to be created prior to it being used. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS Kinesis component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS S3 default configuration |  | KinesisConfiguration
+| *accessKey* (common) | Amazon AWS Access Key |  | String
+| *secretKey* (common) | Amazon AWS Secret Key |  | String
+| *region* (common) | Amazon AWS Region |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+
+// endpoint options: START
+The AWS Kinesis endpoint is configured using URI syntax:
+
+----
+aws-kinesis:streamName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *streamName* | *Required* Name of the stream |  | String
+|===
+
+
+==== Query Parameters (30 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonKinesisClient* (common) | Amazon Kinesis client to use for all requests for this endpoint |  | AmazonKinesis
+| *proxyHost* (common) | To define a proxy host when instantiating the DDBStreams client |  | String
+| *proxyPort* (common) | To define a proxy port when instantiating the DDBStreams client |  | Integer
+| *region* (common) | The region in which Kinesis client needs to work |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *iteratorType* (consumer) | Defines where in the Kinesis stream to start getting records | TRIM_HORIZON | ShardIteratorType
+| *maxResultsPerRequest* (consumer) | Maximum number of records that will be fetched in each poll | 1 | int
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *sequenceNumber* (consumer) | The sequence number to start polling from. Required if iteratorType is set to AFTER_SEQUENCE_NUMBER or AT_SEQUENCE_NUMBER |  | String
+| *shardClosed* (consumer) | Define what will be the behavior in case of shard closed. Possible value are ignore, silent and fail.In case of ignore a message will be logged and the consumer will restart from the beginning,in case of silent there will be no logging and the consumer will start from the beginning,in case of fail a ReachedClosedStateException will be raised | ignore | KinesisShardClosed StrategyEnum
+| *shardId* (consumer) | Defines which shardId in the Kinesis stream to get records from |  | String
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-kinesis.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-kinesis.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-kinesis.configuration.amazon-kinesis-client* | Amazon Kinesis client to use for all requests for this endpoint |  | AmazonKinesis
+| *camel.component.aws-kinesis.configuration.iterator-type* | Defines where in the Kinesis stream to start getting records |  | ShardIteratorType
+| *camel.component.aws-kinesis.configuration.max-results-per-request* | Maximum number of records that will be fetched in each poll | 1 | Integer
+| *camel.component.aws-kinesis.configuration.proxy-host* | To define a proxy host when instantiating the DDBStreams client |  | String
+| *camel.component.aws-kinesis.configuration.proxy-port* | To define a proxy port when instantiating the DDBStreams client |  | Integer
+| *camel.component.aws-kinesis.configuration.region* | The region in which Kinesis client needs to work |  | String
+| *camel.component.aws-kinesis.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-kinesis.configuration.sequence-number* | The sequence number to start polling from. Required if iteratorType is set to AFTER_SEQUENCE_NUMBER or AT_SEQUENCE_NUMBER |  | String
+| *camel.component.aws-kinesis.configuration.shard-closed* | Define what will be the behavior in case of shard closed. Possible value are ignore, silent and fail.In case of ignore a message will be logged and the consumer will restart from the beginning,in case of silent there will be no logging and the consumer will start from the beginning,in case of fail a ReachedClosedStateException will be raised |  | KinesisShardClosed StrategyEnum
+| *camel.component.aws-kinesis.configuration.shard-id* | Defines which shardId in the Kinesis stream to get records from |  | String
+| *camel.component.aws-kinesis.configuration.stream-name* | Name of the stream |  | String
+| *camel.component.aws-kinesis.enabled* | Enable aws-kinesis component | true | Boolean
+| *camel.component.aws-kinesis.region* | Amazon AWS Region |  | String
+| *camel.component.aws-kinesis.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-kinesis.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+
+
+Required Kinesis component options
+
+You have to provide the amazonKinesisClient in the
+Registry with proxies and relevant credentials
+configured.
+
+### Batch Consumer
+
+This component implements the Batch Consumer.
+
+This allows you for instance to know how many messages exists in this
+batch and for instance let the Aggregator
+aggregate this number of messages.
+
+### Usage
+
+#### Message headers set by the Kinesis consumer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsKinesisSequenceNumber` |`String` |The sequence number of the record. This is represented as a String as it
+size is not defined by the API. If it is to be used as a numerical type then use
+
+|`CamelAwsKinesisApproximateArrivalTimestamp` |`String` |The time AWS assigned as the arrival time of the record.
+
+|`CamelAwsKinesisPartitionKey` |`String` |Identifies which shard in the stream the data record is assigned to.
+|=======================================================================
+
+#### AmazonKinesis configuration
+
+You will need to create an instance of AmazonKinesisClient and
+bind it to the registry
+
+[source,java]
+--------------------------------------------------------------------------------------------------------------------
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+Region region = Region.getRegion(Regions.fromName(region));
+region.createClient(AmazonKinesisClient.class, null, clientConfiguration);
+// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain
+
+registry.bind("kinesisClient", client);
+--------------------------------------------------------------------------------------------------------------------
+
+You then have to reference the AmazonKinesisClient in the `amazonKinesisClient` URI option.
+
+[source,java]
+--------------------------------------------------------------------------------------------------------------------
+from("aws-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
+  .to("log:out?showAll=true");
+--------------------------------------------------------------------------------------------------------------------
+
+#### Providing AWS Credentials
+
+It is recommended that the credentials are obtained by using the
+http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html[DefaultAWSCredentialsProviderChain]
+that is the default when creating a new ClientConfiguration instance,
+however, a
+different http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProvider.html[AWSCredentialsProvider]
+can be specified when calling createClient(...).
+
+#### Message headers used by the Kinesis producer to write to Kinesis.  The producer expects that the message body is a `byte[]`.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsKinesisPartitionKey` |`String` |The PartitionKey to pass to Kinesis to store this record.
+
+|`CamelAwsKinesisSequenceNumber` |`String` |Optional paramter to indicate the sequence number of this record.
+
+|=======================================================================
+
+#### Message headers set by the Kinesis producer on successful storage of a Record
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsKinesisSequenceNumber` |`String` |The sequence number of the record, as defined in
+http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html#API_PutRecord_ResponseSyntax[Response Syntax]
+
+|`CamelAwsKinesisShardId` |`String` |The shard ID of where the Record was stored
+
+
+|=======================================================================
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.17 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-kinesis-firehose-component.adoc b/docs/components/modules/ROOT/pages/aws-kinesis-firehose-component.adoc
deleted file mode 120000
index a2fadf7..0000000
--- a/docs/components/modules/ROOT/pages/aws-kinesis-firehose-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-kinesis-firehose-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-kinesis-firehose-component.adoc b/docs/components/modules/ROOT/pages/aws-kinesis-firehose-component.adoc
new file mode 100644
index 0000000..8a56681
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-kinesis-firehose-component.adoc
@@ -0,0 +1,197 @@
+[[aws-kinesis-firehose-component]]
+= AWS Kinesis Firehose Component
+
+*Available as of Camel version 2.19*
+
+The Kinesis Firehose component supports sending messages to Amazon Kinesis Firehose service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon Kinesis Firehose. More information are available
+at https://aws.amazon.com/kinesis/firehose/[AWS Kinesis Firehose]
+
+### URI Format
+
+[source,java]
+-----------------------------------
+aws-kinesis-firehose://delivery-stream-name[?options]
+-----------------------------------
+
+The stream needs to be created prior to it being used. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS Kinesis Firehose component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS Kinesis Firehose default configuration |  | KinesisFirehose Configuration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | Amazon AWS Region |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+
+// endpoint options: START
+The AWS Kinesis Firehose endpoint is configured using URI syntax:
+
+----
+aws-kinesis-firehose:streamName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *streamName* | *Required* Name of the stream |  | String
+|===
+
+
+==== Query Parameters (7 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonKinesisFirehoseClient* (producer) | Amazon Kinesis Firehose client to use for all requests for this endpoint |  | AmazonKinesisFirehose
+| *proxyHost* (producer) | To define a proxy host when instantiating the DDBStreams client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the DDBStreams client |  | Integer
+| *region* (producer) | The region in which Kinesis client needs to work |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-kinesis-firehose.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-kinesis-firehose.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-kinesis-firehose.configuration.amazon-kinesis-firehose-client* | Amazon Kinesis Firehose client to use for all requests for this endpoint |  | AmazonKinesisFirehose
+| *camel.component.aws-kinesis-firehose.configuration.proxy-host* | To define a proxy host when instantiating the DDBStreams client |  | String
+| *camel.component.aws-kinesis-firehose.configuration.proxy-port* | To define a proxy port when instantiating the DDBStreams client |  | Integer
+| *camel.component.aws-kinesis-firehose.configuration.region* | The region in which Kinesis client needs to work |  | String
+| *camel.component.aws-kinesis-firehose.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-kinesis-firehose.configuration.stream-name* | Name of the stream |  | String
+| *camel.component.aws-kinesis-firehose.enabled* | Enable aws-kinesis-firehose component | true | Boolean
+| *camel.component.aws-kinesis-firehose.region* | Amazon AWS Region |  | String
+| *camel.component.aws-kinesis-firehose.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-kinesis-firehose.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+
+
+Required Kinesis Firehose component options
+
+You have to provide the amazonKinesisClient in the
+Registry with proxies and relevant credentials
+configured.
+
+
+### Usage
+
+#### Amazon Kinesis Firehose configuration
+
+You will need to create an instance of AmazonKinesisClient and
+bind it to the registry
+
+[source,java]
+--------------------------------------------------------------------------------------------------------------------
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+Region region = Region.getRegion(Regions.fromName(region));
+region.createClient(AmazonKinesisClient.class, null, clientConfiguration);
+// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain
+
+registry.bind("kinesisFirehoseClient", client);
+--------------------------------------------------------------------------------------------------------------------
+
+You then have to reference the AmazonKinesisFirehoseClient in the `amazonKinesisFirehoseClient` URI option.
+
+[source,java]
+--------------------------------------------------------------------------------------------------------------------
+from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient")
+  .to("log:out?showAll=true");
+--------------------------------------------------------------------------------------------------------------------
+
+#### Providing AWS Credentials
+
+It is recommended that the credentials are obtained by using the
+http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html[DefaultAWSCredentialsProviderChain]
+that is the default when creating a new ClientConfiguration instance,
+however, a
+different http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProvider.html[AWSCredentialsProvider]
+can be specified when calling createClient(...).
+
+#### Message headers set by the Kinesis producer on successful storage of a Record
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsKinesisFirehoseRecordId` |`String` |The record ID, as defined in
+http://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecord.html#API_PutRecord_ResponseSyntax[Response Syntax]
+
+
+|=======================================================================
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.19 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-kms-component.adoc b/docs/components/modules/ROOT/pages/aws-kms-component.adoc
deleted file mode 120000
index 18102be..0000000
--- a/docs/components/modules/ROOT/pages/aws-kms-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-kms-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-kms-component.adoc b/docs/components/modules/ROOT/pages/aws-kms-component.adoc
new file mode 100644
index 0000000..51d9d86
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-kms-component.adoc
@@ -0,0 +1,170 @@
+[[aws-kms-component]]
+= AWS KMS Component
+
+*Available as of Camel version 2.21*
+
+The KMS component supports create, run, start, stop and terminate
+https://aws.amazon.com/it/kms/[AWS KMS] instances.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon KMS. More information are available at
+https://aws.amazon.com/it/mq/[Amazon KMS].
+
+### URI Format
+
+[source,java]
+-------------------------
+aws-kms://label[?options]
+-------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS KMS component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS KMS default configuration |  | KMSConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which KMS client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS KMS endpoint is configured using URI syntax:
+
+----
+aws-kms:label
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *label* | *Required* Logical name |  | String
+|===
+
+
+==== Query Parameters (8 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *kmsClient* (producer) | To use a existing configured AWS KMS as client |  | AWSKMS
+| *operation* (producer) | *Required* The operation to perform |  | KMSOperations
+| *proxyHost* (producer) | To define a proxy host when instantiating the KMS client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the KMS client |  | Integer
+| *region* (producer) | The region in which KMS client needs to work |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-kms.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-kms.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-kms.configuration.kms-client* | To use a existing configured AWS KMS as client |  | AWSKMS
+| *camel.component.aws-kms.configuration.operation* | The operation to perform |  | KMSOperations
+| *camel.component.aws-kms.configuration.proxy-host* | To define a proxy host when instantiating the KMS client |  | String
+| *camel.component.aws-kms.configuration.proxy-port* | To define a proxy port when instantiating the KMS client |  | Integer
+| *camel.component.aws-kms.configuration.region* | The region in which KMS client needs to work |  | String
+| *camel.component.aws-kms.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-kms.enabled* | Whether to enable auto configuration of the aws-kms component. This is enabled by default. |  | Boolean
+| *camel.component.aws-kms.region* | The region in which KMS client needs to work |  | String
+| *camel.component.aws-kms.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-kms.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required KMS component options
+
+You have to provide the amazonKmsClient in the
+Registry or your accessKey and secretKey to access
+the https://aws.amazon.com/it/kms/[Amazon KMS] service.
+
+### Usage
+
+#### Message headers evaluated by the MQ producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsKMSLimit` |`Integer` |The limit number of keys to return while performing a listKeys operation
+
+|`CamelAwsKMSOperation` |`String` |The operation we want to perform
+
+|`CamelAwsKMSDescription` |`String` |A key description to use while performing a createKey operation
+
+|`CamelAwsKMSKeyId` |`String` |The key Id 
+|=======================================================================
+
+#### KMS Producer operations
+
+Camel-AWS KMS component provides the following operation on the producer side:
+
+- listKeys
+- createKey
+- disableKey
+- scheduleKeyDeletion
+- describeKey
+- enableKey
+
+Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.16 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-lambda-component.adoc b/docs/components/modules/ROOT/pages/aws-lambda-component.adoc
deleted file mode 120000
index 8bbd29d..0000000
--- a/docs/components/modules/ROOT/pages/aws-lambda-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-lambda-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-lambda-component.adoc b/docs/components/modules/ROOT/pages/aws-lambda-component.adoc
new file mode 100644
index 0000000..e043781
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-lambda-component.adoc
@@ -0,0 +1,227 @@
+[[aws-lambda-component]]
+= AWS Lambda Component
+
+*Available as of Camel version 2.20*
+
+The Lambda component supports create, get, list, delete and invoke
+https://aws.amazon.com/lambda/[AWS Lambda] functions.
+
+*Prerequisites*
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon Lambda. More information are available at
+https://aws.amazon.com/lambda/[Amazon Lambda].
+
+When creating a Lambda function, you need to specify a IAM role which has at least the AWSLambdaBasicExecuteRole policy attached.
+
+*Warning*
+
+Lambda is regional service. Unlike S3 bucket, Lambda function created in a given region is not available on other regions.
+
+### URI Format
+
+[source,java]
+-------------------------
+aws-lambda://functionName[?options]
+-------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS Lambda component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS Lambda default configuration |  | LambdaConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | Amazon AWS Region |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS Lambda endpoint is configured using URI syntax:
+
+----
+aws-lambda:function
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *function* | *Required* Name of the Lambda function. |  | String
+|===
+
+
+==== Query Parameters (8 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *operation* (producer) | *Required* The operation to perform. It can be listFunctions, getFunction, createFunction, deleteFunction or invokeFunction |  | LambdaOperations
+| *region* (producer) | Amazon AWS Region |  | String
+| *awsLambdaClient* (advanced) | To use a existing configured AwsLambdaClient as client |  | AWSLambda
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *proxyHost* (proxy) | To define a proxy host when instantiating the Lambda client |  | String
+| *proxyPort* (proxy) | To define a proxy port when instantiating the Lambda client |  | Integer
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-lambda.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-lambda.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-lambda.configuration.aws-lambda-client* | To use a existing configured AwsLambdaClient as client |  | AWSLambda
+| *camel.component.aws-lambda.configuration.function* | Name of the Lambda function. |  | String
+| *camel.component.aws-lambda.configuration.operation* | The operation to perform. It can be listFunctions, getFunction, createFunction, deleteFunction or invokeFunction |  | LambdaOperations
+| *camel.component.aws-lambda.configuration.proxy-host* | To define a proxy host when instantiating the Lambda client |  | String
+| *camel.component.aws-lambda.configuration.proxy-port* | To define a proxy port when instantiating the Lambda client |  | Integer
+| *camel.component.aws-lambda.configuration.region* | Amazon AWS Region |  | String
+| *camel.component.aws-lambda.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-lambda.enabled* | Whether to enable auto configuration of the aws-lambda component. This is enabled by default. |  | Boolean
+| *camel.component.aws-lambda.region* | Amazon AWS Region |  | String
+| *camel.component.aws-lambda.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-lambda.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required Lambda component options
+
+You have to provide the awsLambdaClient in the
+Registry or your accessKey and secretKey to access
+the https://aws.amazon.com/lambda/[Amazon Lambda] service.
+
+### Usage
+
+#### Message headers evaluated by the Lambda producer
+
+[width="100%",cols="5%,5%,10%,75%,5%",options="header",]
+|=======================================================================
+|Operation |Header |Type |Description |Required
+
+|All |`CamelAwsLambdaOperation` |`String` |The operation we want to perform. Override operation passed as query parameter| Yes
+
+|createFunction |`CamelAwsLambdaS3Bucket` |`String` |Amazon S3 bucket name where the .zip file containing
+your deployment package is stored. This bucket must reside in the same AWS region where you are creating the Lambda function.| No
+
+|createFunction |`CamelAwsLambdaS3Key` |`String` |The Amazon S3 object (the deployment package) key name
+you want to upload.| No
+
+|createFunction |`CamelAwsLambdaS3ObjectVersion` |String |The Amazon S3 object (the deployment package) version
+you want to upload.| No
+
+|createFunction |`CamelAwsLambdaZipFile` |`String` |The local path of the zip file (the deployment package).
+ Content of zip file can also be put in Message body.| No
+
+|createFunction |`CamelAwsLambdaRole` |`String` |The Amazon Resource Name (ARN) of the IAM role that Lambda assumes
+ when it executes your function to access any other Amazon Web Services (AWS) resources. |Yes
+
+|createFunction |`CamelAwsLambdaRuntime` |String |The runtime environment for the Lambda function you are uploading.
+ (nodejs, nodejs4.3, nodejs6.10, java8, python2.7, python3.6, dotnetcore1.0, odejs4.3-edge) |Yes
+
+|createFunction |`CamelAwsLambdaHandler` |`String` |The function within your code that Lambda calls to begin execution.
+ For Node.js, it is the module-name.export value in your function.
+ For Java, it can be package.class-name::handler or package.class-name.|Yes
+
+|createFunction |`CamelAwsLambdaDescription` |`String` |The user-provided description.|No
+
+|createFunction |`CamelAwsLambdaTargetArn` |`String` |The parent object that contains the target ARN (Amazon Resource Name)
+of an Amazon SQS queue or Amazon SNS topic.|No
+
+|createFunction |`CamelAwsLambdaMemorySize` |`Integer` |The memory size, in MB, you configured for the function.
+Must be a multiple of 64 MB.|No
+
+|createFunction |`CamelAwsLambdaKMSKeyArn` |`String` |The Amazon Resource Name (ARN) of the KMS key used to encrypt your function's environment variables.
+If not provided, AWS Lambda will use a default service key.|No
+
+|createFunction |`CamelAwsLambdaPublish` |`Boolean` |This boolean parameter can be used to request AWS Lambda
+to create the Lambda function and publish a version as an atomic operation.|No
+
+|createFunction |`CamelAwsLambdaTimeout` |`Integer` |The function execution time at which Lambda should terminate the function.
+The default is 3 seconds.|No
+
+|createFunction |`CamelAwsLambdaTracingConfig` |`String` |Your function's tracing settings (Active or PassThrough).|No
+
+|createFunction |`CamelAwsLambdaEnvironmentVariables` |`Map<String, String>` |The key-value pairs that represent your environment's configuration settings.|No
+
+|createFunction |`CamelAwsLambdaEnvironmentTags` |`Map<String, String>` |The list of tags (key-value pairs) assigned to the new function.|No
+
+|createFunction |`CamelAwsLambdaSecurityGroupIds` |`List<String>` |If your Lambda function accesses resources in a VPC, a list of one or more security groups IDs in your VPC.|No
+
+|createFunction |`CamelAwsLambdaSubnetIds` |`List<String>` |If your Lambda function accesses resources in a VPC, a list of one or more subnet IDs in your VPC.|No
+
+|=======================================================================
+
+### List of Avalaible Operations
+
+- listFunctions
+- getFunction,
+- createFunction
+- deleteFunction
+- invokeFunction
+- updateFunction
+- createEventSourceMapping
+- deleteEventSourceMapping
+- listEventSourceMapping
+
+### Example
+
+To have a full understanding of how the component works, you may have a look at this https://github.com/apache/camel/blob/master/components/camel-aws/src/test/java/org/apache/camel/component/aws/lambda/integration/LambdaComponentIntegrationTest.java[integration test]
+
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.16 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-mq-component.adoc b/docs/components/modules/ROOT/pages/aws-mq-component.adoc
deleted file mode 120000
index 54d2872..0000000
--- a/docs/components/modules/ROOT/pages/aws-mq-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-mq-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-mq-component.adoc b/docs/components/modules/ROOT/pages/aws-mq-component.adoc
new file mode 100644
index 0000000..2496759
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-mq-component.adoc
@@ -0,0 +1,171 @@
+[[aws-mq-component]]
+= AWS MQ Component
+
+*Available as of Camel version 2.21*
+
+The EC2 component supports create, run, start, stop and terminate
+https://aws.amazon.com/it/mq/[AWS MQ] instances.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon MQ. More information are available at
+https://aws.amazon.com/it/mq/[Amazon MQ].
+
+### URI Format
+
+[source,java]
+-------------------------
+aws-mq://label[?options]
+-------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS MQ component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS MQ default configuration |  | MQConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which MQ client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS MQ endpoint is configured using URI syntax:
+
+----
+aws-mq:label
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *label* | *Required* Logical name |  | String
+|===
+
+
+==== Query Parameters (8 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *amazonMqClient* (producer) | To use a existing configured AmazonMQClient as client |  | AmazonMQ
+| *operation* (producer) | *Required* The operation to perform. It can be listBrokers,createBroker,deleteBroker |  | MQOperations
+| *proxyHost* (producer) | To define a proxy host when instantiating the MQ client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the MQ client |  | Integer
+| *region* (producer) | The region in which MQ client needs to work |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-mq.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-mq.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-mq.configuration.amazon-mq-client* | To use a existing configured AmazonMQClient as client |  | AmazonMQ
+| *camel.component.aws-mq.configuration.operation* | The operation to perform. It can be listBrokers,createBroker,deleteBroker |  | MQOperations
+| *camel.component.aws-mq.configuration.proxy-host* | To define a proxy host when instantiating the MQ client |  | String
+| *camel.component.aws-mq.configuration.proxy-port* | To define a proxy port when instantiating the MQ client |  | Integer
+| *camel.component.aws-mq.configuration.region* | The region in which MQ client needs to work |  | String
+| *camel.component.aws-mq.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-mq.enabled* | Whether to enable auto configuration of the aws-mq component. This is enabled by default. |  | Boolean
+| *camel.component.aws-mq.region* | The region in which MQ client needs to work |  | String
+| *camel.component.aws-mq.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-mq.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required EC2 component options
+
+You have to provide the amazonEc2Client in the
+Registry or your accessKey and secretKey to access
+the https://aws.amazon.com/it/ec2/[Amazon EC2] service.
+
+### Usage
+
+#### Message headers evaluated by the MQ producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsMQMaxResults` |`String` |The number of results that must be retrieved from listBrokers operation
+
+|`CamelAwsMQBrokerName` |`String` |The broker name
+
+|`CamelAwsMQOperation` |`String` |The operation we want to perform
+
+|`CamelAwsMQBrokerId` |`String` |The broker id
+
+|`CamelAwsMQBrokerDeploymentMode` |`String` |The deployment mode for the broker in the createBroker operation
+
+|`CamelAwsMQBrokerInstanceType` |`String` |The instance type for the EC2 machine in the createBroker operation
+
+|`CamelAwsMQBrokerEngine` |`String` |The Broker Engine for MQ. Default is ACTIVEMQ
+
+|`CamelAwsMQBrokerEngineVersion` |`String` |The Broker Engine Version for MQ. Currently you can choose between 5.15.6 and 5.15.0 of ACTIVEMQ
+
+|`CamelAwsMQBrokerUsers` |`List<User>` |The list of users for MQ
+
+|`CamelAwsMQBrokerPubliclyAccessible` |`Boolean` |If the MQ instance must be publicly available or not. Default is false.
+|=======================================================================
+
+Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.16 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-s3-component.adoc b/docs/components/modules/ROOT/pages/aws-s3-component.adoc
deleted file mode 120000
index c842d08..0000000
--- a/docs/components/modules/ROOT/pages/aws-s3-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-s3-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-s3-component.adoc b/docs/components/modules/ROOT/pages/aws-s3-component.adoc
new file mode 100644
index 0000000..dd11cc4
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-s3-component.adoc
@@ -0,0 +1,409 @@
+[[aws-s3-component]]
+= AWS S3 Storage Service Component
+
+*Available as of Camel version 2.8*
+
+The S3 component supports storing and retrieving objetcs from/to
+http://aws.amazon.com/s3[Amazon's S3] service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon S3. More information are available at
+http://aws.amazon.com/s3[Amazon S3].
+
+### URI Format
+
+[source,java]
+------------------------------
+aws-s3://bucketNameOrArn[?options]
+------------------------------
+
+The bucket will be created if it don't already exists. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+For example in order to read file `hello.txt` from bucket `helloBucket`, use the following snippet:
+
+[source,java]
+--------------------------------------------------------------------------------
+from("aws-s3:helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
+  .to("file:/var/downloaded");
+--------------------------------------------------------------------------------
+
+
+### URI Options
+
+
+// component options: START
+The AWS S3 Storage Service component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS S3 default configuration |  | S3Configuration
+| *accessKey* (common) | Amazon AWS Access Key |  | String
+| *secretKey* (common) | Amazon AWS Secret Key |  | String
+| *region* (common) | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+
+
+
+
+
+// endpoint options: START
+The AWS S3 Storage Service endpoint is configured using URI syntax:
+
+----
+aws-s3:bucketNameOrArn
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *bucketNameOrArn* | *Required* Bucket name or ARN |  | String
+|===
+
+
+==== Query Parameters (50 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonS3Client* (common) | Reference to a com.amazonaws.services.sqs.AmazonS3 in the link:registry.htmlRegistry. |  | AmazonS3
+| *pathStyleAccess* (common) | Whether or not the S3 client should use path style access | false | boolean
+| *policy* (common) | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. |  | String
+| *proxyHost* (common) | To define a proxy host when instantiating the SQS client |  | String
+| *proxyPort* (common) | Specify a proxy port to be used inside the client definition. |  | Integer
+| *region* (common) | The region in which S3 client needs to work |  | String
+| *useIAMCredentials* (common) | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | boolean
+| *encryptionMaterials* (common) | The encryption materials to use in case of Symmetric/Asymmetric client usage |  | EncryptionMaterials
+| *useEncryption* (common) | Define if encryption must be used or not | false | boolean
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *deleteAfterRead* (consumer) | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, or only the S3Constants#KEY [...]
+| *fileName* (consumer) | To get the object from the bucket with the given file name |  | String
+| *includeBody* (consumer) | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | boolean
+| *maxConnections* (consumer) | Set the maxConnections parameter in the S3 client configuration | 60 | int
+| *maxMessagesPerPoll* (consumer) | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | 10 | int
+| *prefix* (consumer) | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. |  | String
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *autocloseBody* (consumer) | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
+| *deleteAfterWrite* (producer) | Delete file object after the S3 file has been uploaded | false | boolean
+| *multiPartUpload* (producer) | If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize | false | boolean
+| *operation* (producer) | The operation to do in case the user don't want to do only an upload |  | S3Operations
+| *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long
+| *serverSideEncryption* (producer) | Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256. |  | String
+| *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. |  | String
+| *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled |  | String
+| *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *accelerateModeEnabled* ( advanced) | Define if Accelerate Mode enabled is true or false | false | boolean
+| *chunkedEncodingDisabled* ( advanced) | Define if disabled Chunked Encoding is true or false | false | boolean
+| *dualstackEnabled* ( advanced) | Define if Dualstack enabled is true or false | false | boolean
+| *forceGlobalBucketAccess Enabled* ( advanced) | Define if Force Global Bucket Access enabled is true or false | false | boolean
+| *payloadSigningEnabled* ( advanced) | Define if Payload Signing enabled is true or false | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-s3.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-s3.configuration.accelerate-mode-enabled* | Define if Accelerate Mode enabled is true or false | false | Boolean
+| *camel.component.aws-s3.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-s3.configuration.amazon-s3-client* | Reference to a com.amazonaws.services.sqs.AmazonS3 in the link:registry.htmlRegistry. |  | AmazonS3
+| *camel.component.aws-s3.configuration.autoclose-body* | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | Boolean
+| *camel.component.aws-s3.configuration.aws-k-m-s-key-id* | Define the id of KMS key to use in case KMS is enabled |  | String
+| *camel.component.aws-s3.configuration.bucket-name* | Name of the bucket. The bucket will be created if it doesn't already exists. |  | String
+| *camel.component.aws-s3.configuration.chunked-encoding-disabled* | Define if disabled Chunked Encoding is true or false | false | Boolean
+| *camel.component.aws-s3.configuration.delete-after-read* | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, [...]
+| *camel.component.aws-s3.configuration.delete-after-write* | Delete file object after the S3 file has been uploaded | false | Boolean
+| *camel.component.aws-s3.configuration.dualstack-enabled* | Define if Dualstack enabled is true or false | false | Boolean
+| *camel.component.aws-s3.configuration.encryption-materials* | The encryption materials to use in case of Symmetric/Asymmetric client usage |  | EncryptionMaterials
+| *camel.component.aws-s3.configuration.file-name* | To get the object from the bucket with the given file name |  | String
+| *camel.component.aws-s3.configuration.force-global-bucket-access-enabled* | Define if Force Global Bucket Access enabled is true or false | false | Boolean
+| *camel.component.aws-s3.configuration.include-body* | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | [...]
+| *camel.component.aws-s3.configuration.multi-part-upload* | If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize | false | Boolean
+| *camel.component.aws-s3.configuration.operation* | The operation to do in case the user don't want to do only an upload |  | S3Operations
+| *camel.component.aws-s3.configuration.part-size* | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | Long
+| *camel.component.aws-s3.configuration.path-style-access* | Whether or not the S3 client should use path style access | false | Boolean
+| *camel.component.aws-s3.configuration.payload-signing-enabled* | Define if Payload Signing enabled is true or false | false | Boolean
+| *camel.component.aws-s3.configuration.policy* | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. |  | String
+| *camel.component.aws-s3.configuration.prefix* | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. |  | String
+| *camel.component.aws-s3.configuration.proxy-host* | To define a proxy host when instantiating the SQS client |  | String
+| *camel.component.aws-s3.configuration.proxy-port* | Specify a proxy port to be used inside the client definition. |  | Integer
+| *camel.component.aws-s3.configuration.region* | The region in which S3 client needs to work |  | String
+| *camel.component.aws-s3.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-s3.configuration.server-side-encryption* | Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256. |  | String
+| *camel.component.aws-s3.configuration.storage-class* | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. |  | String
+| *camel.component.aws-s3.configuration.use-aws-k-m-s* | Define if KMS must be used or not | false | Boolean
+| *camel.component.aws-s3.configuration.use-encryption* | Define if encryption must be used or not | false | Boolean
+| *camel.component.aws-s3.enabled* | Enable aws-s3 component | true | Boolean
+| *camel.component.aws-s3.region* | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. |  | String
+| *camel.component.aws-s3.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-s3.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+
+
+
+
+
+Required S3 component options
+
+You have to provide the amazonS3Client in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/s3[Amazon's S3].
+
+### Batch Consumer
+
+This component implements the Batch Consumer.
+
+This allows you for instance to know how many messages exists in this
+batch and for instance let the Aggregator
+aggregate this number of messages.
+
+### Usage
+
+#### Message headers evaluated by the S3 producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsS3BucketName` |`String` |The bucket Name which this object will be stored or which will be used for the current operation
+
+|`CamelAwsS3BucketDestinationName` |`String` |*Camel 2.18*: The bucket Destination Name which will be used for the current operation
+
+|`CamelAwsS3ContentLength` |`Long` |The content length of this object.
+
+|`CamelAwsS3ContentType` |`String` |The content type of this object.
+
+|`CamelAwsS3ContentControl` |`String` |*Camel 2.8.2:* The content control of this object.
+
+|`CamelAwsS3ContentDisposition` |`String` |*Camel 2.8.2:* The content disposition of this object.
+
+|`CamelAwsS3ContentEncoding` |`String` |*Camel 2.8.2:* The content encoding of this object.
+
+|`CamelAwsS3ContentMD5` |`String` |*Camel 2.8.2:* The md5 checksum of this object.
+
+|`CamelAwsS3DestinationKey` |`String` |*Camel 2.18*:The Destination key which will be used for the current operation
+
+|`CamelAwsS3Key` |`String` |The key under which this object will be stored or which will be used for the current operation
+
+|`CamelAwsS3LastModified` |`java.util.Date` |*Camel 2.8.2:* The last modified timestamp of this object.
+
+|`CamelAwsS3Operation` |`String` |*Camel 2.18*: The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, downloadLink, listObjects
+
+|`CamelAwsS3StorageClass` |`String` |*Camel 2.8.4:* The storage class of this object.
+
+|`CamelAwsS3CannedAcl` |`String` |*Camel 2.11.0:* The canned acl that will be applied to the object. see
+`com.amazonaws.services.s3.model.CannedAccessControlList` for allowed
+values.
+
+|`CamelAwsS3Acl` |`com.amazonaws.services.s3.model.AccessControlList` |*Camel 2.11.0:* a well constructed Amazon S3 Access Control List object.
+see `com.amazonaws.services.s3.model.AccessControlList` for more details
+
+|`CamelAwsS3Headers` |`Map<String,String>` |*Camel 2.15.0*: support to get or set custom objectMetadata headers.
+
+|`CamelAwsS3ServerSideEncryption` |String |*Camel 2.16:* Sets the server-side encryption algorithm when encrypting
+the object using AWS-managed keys. For example use AES256.
+
+|`CamelAwsS3VersionId` |`String` |The version Id of the object to be stored or returned from the current operation
+|=======================================================================
+
+#### Message headers set by the S3 producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+|`CamelAwsS3ETag` |`String` |The ETag value for the newly uploaded object.
+
+|`CamelAwsS3VersionId` |`String` |The *optional* version ID of the newly uploaded object.
+
+|`CamelAwsS3DownloadLinkExpiration` | `String` | The expiration (millis) of URL download link. The link will be stored into *CamelAwsS3DownloadLink* response header.
+
+|=======================================================================
+
+#### Message headers set by the S3 consumer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsS3Key` |`String` |The key under which this object is stored.
+
+|`CamelAwsS3BucketName` |`String` |The name of the bucket in which this object is contained.
+
+|`CamelAwsS3ETag` |`String` |The hex encoded 128-bit MD5 digest of the associated object according to
+RFC 1864. This data is used as an integrity check to verify that the
+data received by the caller is the same data that was sent by Amazon S3.
+
+|`CamelAwsS3LastModified` |`Date` |The value of the Last-Modified header, indicating the date and time at
+which Amazon S3 last recorded a modification to the associated object.
+
+|`CamelAwsS3VersionId` |`String` |The version ID of the associated Amazon S3 object if available. Version
+IDs are only assigned to objects when an object is uploaded to an Amazon
+S3 bucket that has object versioning enabled.
+
+|`CamelAwsS3ContentType` |`String` |The Content-Type HTTP header, which indicates the type of content stored
+in the associated object. The value of this header is a standard MIME
+type.
+
+|`CamelAwsS3ContentMD5` |`String` |The base64 encoded 128-bit MD5 digest of the associated object (content
+- not including headers) according to RFC 1864. This data is used as a
+message integrity check to verify that the data received by Amazon S3 is
+the same data that the caller sent.
+
+|`CamelAwsS3ContentLength` |`Long` |The Content-Length HTTP header indicating the size of the associated
+object in bytes.
+
+|`CamelAwsS3ContentEncoding` |`String` |The *optional* Content-Encoding HTTP header specifying what content
+encodings have been applied to the object and what decoding mechanisms
+must be applied in order to obtain the media-type referenced by the
+Content-Type field.
+
+|`CamelAwsS3ContentDisposition` |`String` |The *optional* Content-Disposition HTTP header, which specifies
+presentational information such as the recommended filename for the
+object to be saved as.
+
+|`CamelAwsS3ContentControl` |`String` |The *optional* Cache-Control HTTP header which allows the user to
+specify caching behavior along the HTTP request/reply chain.
+
+|`CamelAwsS3ServerSideEncryption` |String |*Camel 2.16:* The server-side encryption algorithm when encrypting the
+object using AWS-managed keys.
+|=======================================================================
+
+#### S3 Producer operations
+
+Camel-AWS s3 component provides the following operation on the producer side:
+
+- copyObject
+- deleteObject
+- listBuckets
+- deleteBucket
+- downloadLink
+- listObjects
+
+#### Advanced AmazonS3 configuration
+
+If your Camel Application is running behind a firewall or if you need to
+have more control over the `AmazonS3` instance configuration, you can
+create your own instance:
+
+[source,java]
+--------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+AmazonS3 client = new AmazonS3Client(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+--------------------------------------------------------------------------------------
+
+and refer to it in your Camel aws-s3 component configuration:
+
+[source,java]
+--------------------------------------------------------------------------------
+from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
+.to("mock:result");
+--------------------------------------------------------------------------------
+
+#### Use KMS with the S3 component
+
+To use AWS KMS to encrypt/decrypt data by using AWS infrastructure you can use the options introduced in 2.21.x like in the following example
+
+[source,java]
+--------------------------------------------------------------------------------
+from("file:tmp/test?fileName=test.txt")
+     .setHeader(S3Constants.KEY, constant("testFile"))
+     .to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
+--------------------------------------------------------------------------------
+
+In this way you'll ask to S3, to use the KMS key 3f0637ad-296a-3dfe-a796-e60654fb128c, to encrypt the file test.txt. When you'll ask to download this file, the decryption will be done directly before the download.
+
+#### Use "useIAMCredentials" with the s3 component
+
+To use AWS IAM credentials, you must first verify that the EC2 in which you are launching the Camel application on has an IAM role associated with it containing the appropriate policies attached to run effectively.
+Keep in mind that this feature should only be set to "true" on remote instances. To clarify even further, you must still use static credentials locally since IAM is an AWS specific component,
+but AWS environments should now be easier to manage. After this is implemented and understood, you can set the query parameter "useIAMCredentials" to "true" for AWS environments! To effectively toggle this
+on and off based on local and remote environments, you can consider enabling this query parameter with system environment variables. For example, your code could set the "useIAMCredentials" query parameter to "true",
+when the system environment variable called "isRemote" is set to true (there are many other ways to do this and this should act as a simple example). Although it doesn't take away the need for static credentials completely,
+using IAM credentials on AWS environments takes away the need to refresh on remote environments and adds a major security boost (IAM credentials are refreshed automatically every 6 hours and update when their
+policies are updated). This is the AWS recommended way to manage credentials and therefore should be used as often as possible.
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.8 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-sdb-component.adoc b/docs/components/modules/ROOT/pages/aws-sdb-component.adoc
deleted file mode 120000
index 6cd88d5..0000000
--- a/docs/components/modules/ROOT/pages/aws-sdb-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-sdb-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-sdb-component.adoc b/docs/components/modules/ROOT/pages/aws-sdb-component.adoc
new file mode 100644
index 0000000..30cee38
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-sdb-component.adoc
@@ -0,0 +1,244 @@
+[[aws-sdb-component]]
+= AWS SimpleDB Component
+
+*Available as of Camel version 2.9*
+
+The sdb component supports storing and retrieving data from/to
+http://aws.amazon.com/sdb[Amazon's SDB] service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon SDB. More information are available at
+http://aws.amazon.com/sdb[Amazon SDB].
+
+### URI Format
+
+[source,java]
+------------------------------
+aws-sdb://domainName[?options]
+------------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS SimpleDB component has no options.
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS SimpleDB endpoint is configured using URI syntax:
+
+----
+aws-sdb:domainName
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *domainName* | *Required* The name of the domain currently worked with. |  | String
+|===
+
+
+==== Query Parameters (10 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *amazonSDBClient* (producer) | To use the AmazonSimpleDB as the client |  | AmazonSimpleDB
+| *consistentRead* (producer) | Determines whether or not strong consistency should be enforced when data is read. | false | boolean
+| *maxNumberOfDomains* (producer) | The maximum number of domain names you want returned. The range is 1 to 100. |  | Integer
+| *operation* (producer) | Operation to perform | PutAttributes | SdbOperations
+| *proxyHost* (producer) | To define a proxy host when instantiating the SDB client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the SDB client |  | Integer
+| *region* (producer) | The region in which SDB client needs to work |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-sdb.enabled* | Enable aws-sdb component | true | Boolean
+| *camel.component.aws-sdb.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required SDB component options
+
+You have to provide the amazonSDBClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/sdb[Amazon's SDB].
+
+### Usage
+
+#### Message headers evaluated by the SDB producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSdbAttributes` |`Collection<Attribute>` |List of attributes to be acted upon.
+
+|`CamelAwsSdbAttributeNames` |`Collection<String>` |The names of the attributes to be retrieved.
+
+|`CamelAwsSdbConsistentRead` |`Boolean` |Determines whether or not strong consistency should be enforced when
+data is read.
+
+|`CamelAwsSdbDeletableItems` |`Collection<DeletableItem>` |A list of items on which to perform the delete operation in a batch.
+
+|`CamelAwsSdbDomainName` |`String` |The name of the domain currently worked with.
+
+|`CamelAwsSdbItemName` |`String` |The unique key for this item
+
+|`CamelAwsSdbMaxNumberOfDomains` |`Integer` |The maximum number of domain names you want returned. The range is 1 *
+to 100.
+
+|`CamelAwsSdbNextToken` |`String` |A string specifying where to start the next list of domain/item names.
+
+|`CamelAwsSdbOperation` |`String` |To override the operation from the URI options.
+
+|`CamelAwsSdbReplaceableAttributes` |`Collection<ReplaceableAttribute>` |List of attributes to put in an Item.
+
+|`CamelAwsSdbReplaceableItems` |`Collection<ReplaceableItem>` |A list of items to put in a Domain.
+
+|`CamelAwsSdbSelectExpression` |`String` |The expression used to query the domain.
+
+|`CamelAwsSdbUpdateCondition` |`UpdateCondition` |The update condition which, if specified, determines whether the
+specified attributes will be updated/deleted or not.
+|=======================================================================
+
+#### Message headers set during DomainMetadata operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSdbTimestamp` |`Integer` |The data and time when metadata was calculated, in Epoch (UNIX) seconds.
+
+|`CamelAwsSdbItemCount` |`Integer` |The number of all items in the domain.
+
+|`CamelAwsSdbAttributeNameCount` |`Integer` |The number of unique attribute names in the domain.
+
+|`CamelAwsSdbAttributeValueCount` |`Integer` |The number of all attribute name/value pairs in the domain.
+
+|`CamelAwsSdbAttributeNameSize` |`Long` |The total size of all unique attribute names in the domain, in bytes.
+
+|`CamelAwsSdbAttributeValueSize` |`Long` |The total size of all attribute values in the domain, in bytes.
+
+|`CamelAwsSdbItemNameSize` |`Long` |The total size of all item names in the domain, in bytes.
+|=======================================================================
+
+#### Message headers set during GetAttributes operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSdbAttributes` |`List<Attribute>` |The list of attributes returned by the operation.
+|=======================================================================
+
+#### Message headers set during ListDomains operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSdbDomainNames` |`List<String>` |A list of domain names that match the expression.
+
+|`CamelAwsSdbNextToken` |`String` |An opaque token indicating that there are more domains than the
+specified MaxNumberOfDomains still available.
+|=======================================================================
+
+#### Message headers set during Select operation
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSdbItems` |`List<Item>` |A list of items that match the select expression.
+
+|`CamelAwsSdbNextToken` |`String` |An opaque token indicating that more items than MaxNumberOfItems were
+matched, the response size exceeded 1 megabyte, or the execution time
+exceeded 5 seconds.
+|=======================================================================
+
+#### Advanced AmazonSimpleDB configuration
+
+If you need more control over the `AmazonSimpleDB` instance
+configuration you can create your own instance and refer to it from the
+URI:
+
+[source,java]
+----------------------------------------------------
+from("direct:start")
+.to("aws-sdb://domainName?amazonSDBClient=#client");
+----------------------------------------------------
+
+The `#client` refers to a `AmazonSimpleDB` in the
+Registry.
+
+For example if your Camel Application is running behind a firewall:
+
+[source,java]
+--------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+AmazonSimpleDB client = new AmazonSimpleDBClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+--------------------------------------------------------------------------------------
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.8.4 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-ses-component.adoc b/docs/components/modules/ROOT/pages/aws-ses-component.adoc
deleted file mode 120000
index 9f29dfa..0000000
--- a/docs/components/modules/ROOT/pages/aws-ses-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-ses-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-ses-component.adoc b/docs/components/modules/ROOT/pages/aws-ses-component.adoc
new file mode 100644
index 0000000..1d1d3bf
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-ses-component.adoc
@@ -0,0 +1,207 @@
+[[aws-ses-component]]
+= AWS Simple Email Service Component
+
+*Available as of Camel version 2.9*
+
+The ses component supports sending emails with
+http://aws.amazon.com/ses[Amazon's SES] service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon SES. More information are available at
+http://aws.amazon.com/ses[Amazon SES].
+
+### URI Format
+
+[source,java]
+------------------------
+aws-ses://from[?options]
+------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS Simple Email Service component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS SES default configuration |  | SesConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which SES client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS Simple Email Service endpoint is configured using URI syntax:
+
+----
+aws-ses:from
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *from* | *Required* The sender's email address. |  | String
+|===
+
+
+==== Query Parameters (11 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonSESClient* (producer) | To use the AmazonSimpleEmailService as the client |  | AmazonSimpleEmail Service
+| *proxyHost* (producer) | To define a proxy host when instantiating the SES client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the SES client |  | Integer
+| *region* (producer) | The region in which SES client needs to work |  | String
+| *replyToAddresses* (producer) | List of reply-to email address(es) for the message, override it using 'CamelAwsSesReplyToAddresses' header. |  | List
+| *returnPath* (producer) | The email address to which bounce notifications are to be forwarded, override it using 'CamelAwsSesReturnPath' header. |  | String
+| *subject* (producer) | The subject which is used if the message header 'CamelAwsSesSubject' is not present. |  | String
+| *to* (producer) | List of destination email address. Can be overriden with 'CamelAwsSesTo' header. |  | List
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-ses.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ses.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-ses.configuration.amazon-s-e-s-client* | To use the AmazonSimpleEmailService as the client |  | AmazonSimpleEmail Service
+| *camel.component.aws-ses.configuration.from* | The sender's email address. |  | String
+| *camel.component.aws-ses.configuration.proxy-host* | To define a proxy host when instantiating the SES client |  | String
+| *camel.component.aws-ses.configuration.proxy-port* | To define a proxy port when instantiating the SES client |  | Integer
+| *camel.component.aws-ses.configuration.region* | The region in which SES client needs to work |  | String
+| *camel.component.aws-ses.configuration.reply-to-addresses* | List of reply-to email address(es) for the message, override it using 'CamelAwsSesReplyToAddresses' header. |  | List
+| *camel.component.aws-ses.configuration.return-path* | The email address to which bounce notifications are to be forwarded, override it using 'CamelAwsSesReturnPath' header. |  | String
+| *camel.component.aws-ses.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-ses.configuration.subject* | The subject which is used if the message header 'CamelAwsSesSubject' is not present. |  | String
+| *camel.component.aws-ses.configuration.to* | List of destination email address. Can be overriden with 'CamelAwsSesTo' header. |  | List
+| *camel.component.aws-ses.enabled* | Enable aws-ses component | true | Boolean
+| *camel.component.aws-ses.region* | The region in which SES client needs to work |  | String
+| *camel.component.aws-ses.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-ses.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required SES component options
+
+You have to provide the amazonSESClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/ses[Amazon's SES].
+
+### Usage
+
+#### Message headers evaluated by the SES producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSesFrom` |`String` |The sender's email address.
+
+|`CamelAwsSesTo` |`List<String>` |The destination(s) for this email.
+
+|`CamelAwsSesSubject` |`String` |The subject of the message.
+
+|`CamelAwsSesReplyToAddresses` |`List<String>` |The reply-to email address(es) for the message.
+
+|`CamelAwsSesReturnPath` |`String` |The email address to which bounce notifications are to be forwarded.
+
+|`CamelAwsSesHtmlEmail` |`Boolean` |*Since Camel 2.12.3* The flag to show if email content is HTML.
+|=======================================================================
+
+#### Message headers set by the SES producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSesMessageId` |`String` |The Amazon SES message ID.
+|=======================================================================
+
+#### Advanced AmazonSimpleEmailService configuration
+
+If you need more control over the `AmazonSimpleEmailService` instance
+configuration you can create your own instance and refer to it from the
+URI:
+
+[source,java]
+-------------------------------------------------------------
+from("direct:start")
+.to("aws-ses://example@example.com?amazonSESClient=#client");
+-------------------------------------------------------------
+
+The `#client` refers to a `AmazonSimpleEmailService` in the
+Registry.
+
+For example if your Camel Application is running behind a firewall:
+
+[source,java]
+----------------------------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+AmazonSimpleEmailService client = new AmazonSimpleEmailServiceClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+----------------------------------------------------------------------------------------------------------
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.8.4 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-sns-component.adoc b/docs/components/modules/ROOT/pages/aws-sns-component.adoc
deleted file mode 120000
index 75aec9b..0000000
--- a/docs/components/modules/ROOT/pages/aws-sns-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-sns-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-sns-component.adoc b/docs/components/modules/ROOT/pages/aws-sns-component.adoc
new file mode 100644
index 0000000..3c408e0
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-sns-component.adoc
@@ -0,0 +1,202 @@
+[[aws-sns-component]]
+= AWS Simple Notification System Component
+
+*Available as of Camel version 2.8*
+
+The SNS component allows messages to be sent to an
+http://aws.amazon.com/sns[Amazon Simple Notification] Topic. The
+implementation of the Amazon API is provided by
+the http://aws.amazon.com/sdkforjava/[AWS SDK].
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon SNS. More information are available at
+http://aws.amazon.com/sns[Amazon SNS].
+
+### URI Format
+
+[source,java]
+-----------------------------
+aws-sns://topicNameOrArn[?options]
+-----------------------------
+
+The topic will be created if they don't already exists. +
+ You can append query options to the URI in the following format,
+`?options=value&option2=value&...`
+
+### URI Options
+
+
+// component options: START
+The AWS Simple Notification System component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS SNS default configuration |  | SnsConfiguration
+| *accessKey* (producer) | Amazon AWS Access Key |  | String
+| *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *region* (producer) | The region in which SNS client needs to work |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+// endpoint options: START
+The AWS Simple Notification System endpoint is configured using URI syntax:
+
+----
+aws-sns:topicNameOrArn
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *topicNameOrArn* | *Required* Topic name or ARN |  | String
+|===
+
+
+==== Query Parameters (11 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonSNSClient* (producer) | To use the AmazonSNS as the client |  | AmazonSNS
+| *headerFilterStrategy* (producer) | To use a custom HeaderFilterStrategy to map headers to/from Camel. |  | HeaderFilterStrategy
+| *messageStructure* (producer) | The message structure to use such as json |  | String
+| *policy* (producer) | The policy for this queue |  | String
+| *proxyHost* (producer) | To define a proxy host when instantiating the SNS client |  | String
+| *proxyPort* (producer) | To define a proxy port when instantiating the SNS client |  | Integer
+| *region* (producer) | The region in which SNS client needs to work |  | String
+| *subject* (producer) | The subject which is used if the message header 'CamelAwsSnsSubject' is not present. |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-sns.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-sns.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-sns.configuration.amazon-s-n-s-client* | To use the AmazonSNS as the client |  | AmazonSNS
+| *camel.component.aws-sns.configuration.message-structure* | The message structure to use such as json |  | String
+| *camel.component.aws-sns.configuration.policy* | The policy for this queue |  | String
+| *camel.component.aws-sns.configuration.proxy-host* | To define a proxy host when instantiating the SNS client |  | String
+| *camel.component.aws-sns.configuration.proxy-port* | To define a proxy port when instantiating the SNS client |  | Integer
+| *camel.component.aws-sns.configuration.region* | The region in which SNS client needs to work |  | String
+| *camel.component.aws-sns.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-sns.configuration.subject* | The subject which is used if the message header 'CamelAwsSnsSubject' is not present. |  | String
+| *camel.component.aws-sns.configuration.topic-arn* | The Amazon Resource Name (ARN) assigned to the created topic. |  | String
+| *camel.component.aws-sns.configuration.topic-name* | The name of the topic |  | String
+| *camel.component.aws-sns.enabled* | Enable aws-sns component | true | Boolean
+| *camel.component.aws-sns.region* | The region in which SNS client needs to work |  | String
+| *camel.component.aws-sns.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-sns.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+Required SNS component options
+
+You have to provide the amazonSNSClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/sns[Amazon's SNS].
+
+### Usage
+
+#### Message headers evaluated by the SNS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSnsSubject` |`String` |The Amazon SNS message subject. If not set, the subject from the
+`SnsConfiguration` is used.
+|=======================================================================
+
+#### Message headers set by the SNS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSnsMessageId` |`String` |The Amazon SNS message ID.
+|=======================================================================
+
+#### Advanced AmazonSNS configuration
+
+If you need more control over the `AmazonSNS` instance configuration you
+can create your own instance and refer to it from the URI:
+
+[source,java]
+-------------------------------------------------
+from("direct:start")
+.to("aws-sns://MyTopic?amazonSNSClient=#client");
+-------------------------------------------------
+
+The `#client` refers to a `AmazonSNS` in the
+Registry.
+
+For example if your Camel Application is running behind a firewall:
+
+[source,java]
+--------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+AmazonSNS client = new AmazonSNSClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+--------------------------------------------------------------------------------------
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.8 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-sqs-component.adoc b/docs/components/modules/ROOT/pages/aws-sqs-component.adoc
deleted file mode 120000
index bacbc60..0000000
--- a/docs/components/modules/ROOT/pages/aws-sqs-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-sqs-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-sqs-component.adoc b/docs/components/modules/ROOT/pages/aws-sqs-component.adoc
new file mode 100644
index 0000000..6965616
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-sqs-component.adoc
@@ -0,0 +1,338 @@
+[[aws-sqs-component]]
+= AWS Simple Queue Service Component
+
+*Available as of Camel version 2.6*
+
+The sqs component supports sending and receiving messages to
+http://aws.amazon.com/sqs[Amazon's SQS] service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon SQS. More information are available at
+http://aws.amazon.com/sqs[Amazon SQS].
+
+### URI Format
+
+[source,java]
+------------------------------
+aws-sqs://queueNameOrArn[?options]
+------------------------------
+
+The queue will be created if they don't already exists. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS Simple Queue Service component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS SQS default configuration |  | SqsConfiguration
+| *accessKey* (common) | Amazon AWS Access Key |  | String
+| *secretKey* (common) | Amazon AWS Secret Key |  | String
+| *region* (common) | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+
+
+
+
+// endpoint options: START
+The AWS Simple Queue Service endpoint is configured using URI syntax:
+
+----
+aws-sqs:queueNameOrArn
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *queueNameOrArn* | *Required* Queue name or ARN |  | String
+|===
+
+
+==== Query Parameters (51 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonAWSHost* (common) | The hostname of the Amazon AWS cloud. | amazonaws.com | String
+| *amazonSQSClient* (common) | To use the AmazonSQS as client |  | AmazonSQS
+| *headerFilterStrategy* (common) | To use a custom HeaderFilterStrategy to map headers to/from Camel. |  | HeaderFilterStrategy
+| *queueOwnerAWSAccountId* (common) | Specify the queue owner aws account id when you need to connect the queue with different account owner. |  | String
+| *region* (common) | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. |  | String
+| *attributeNames* (consumer) | A list of attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *concurrentConsumers* (consumer) | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | int
+| *defaultVisibilityTimeout* (consumer) | The default visibility timeout (in seconds) |  | Integer
+| *deleteAfterRead* (consumer) | Delete message from SQS after it has been read | true | boolean
+| *deleteIfFiltered* (consumer) | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | boolean
+| *extendMessageVisibility* (consumer) | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | boolean
+| *kmsDataKeyReusePeriod Seconds* (consumer) | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). |  | Integer
+| *kmsMasterKeyId* (consumer) | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. |  | String
+| *maxMessagesPerPoll* (consumer) | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. |  | int
+| *messageAttributeNames* (consumer) | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *serverSideEncryptionEnabled* (consumer) | Define if Server Side Encryption is enabled or not on the queue | false | boolean
+| *visibilityTimeout* (consumer) | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. |  | Integer
+| *waitTimeSeconds* (consumer) | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. |  | Integer
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
+| *delaySeconds* (producer) | Delay sending messages for a number of seconds. |  | Integer
+| *messageDeduplicationId Strategy* (producer) | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: useExchangeId, useContentBasedDeduplication. For the useContentBasedDeduplication option, no messageDeduplicationId will be set on the message. | useExchangeId | MessageDeduplicationId Strategy
+| *messageGroupIdStrategy* (producer) | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: useConstant, useExchangeId, usePropertyValue. For the usePropertyValue option, the value of property CamelAwsMessageGroupId will be used. |  | MessageGroupIdStrategy
+| *delayQueue* (advanced) | Define if you want to apply delaySeconds option to the queue or on single messages | false | boolean
+| *queueUrl* (advanced) | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *proxyHost* (proxy) | To define a proxy host when instantiating the SQS client |  | String
+| *proxyPort* (proxy) | To define a proxy port when instantiating the SQS client |  | Integer
+| *maximumMessageSize* (queue) | The maximumMessageSize (in bytes) an SQS message can contain for this queue. |  | Integer
+| *messageRetentionPeriod* (queue) | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. |  | Integer
+| *policy* (queue) | The policy for this queue |  | String
+| *receiveMessageWaitTime Seconds* (queue) | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. |  | Integer
+| *redrivePolicy* (queue) | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. |  | String
+| *accessKey* (security) | Amazon AWS Access Key |  | String
+| *secretKey* (security) | Amazon AWS Secret Key |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-sqs.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-sqs.configuration.access-key* | Amazon AWS Access Key |  | String
+| *camel.component.aws-sqs.configuration.amazon-a-w-s-host* | The hostname of the Amazon AWS cloud. | amazonaws.com | String
+| *camel.component.aws-sqs.configuration.amazon-s-q-s-client* | To use the AmazonSQS as client |  | AmazonSQS
+| *camel.component.aws-sqs.configuration.attribute-names* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
+| *camel.component.aws-sqs.configuration.concurrent-consumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | Integer
+| *camel.component.aws-sqs.configuration.default-visibility-timeout* | The default visibility timeout (in seconds) |  | Integer
+| *camel.component.aws-sqs.configuration.delay-queue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | Boolean
+| *camel.component.aws-sqs.configuration.delay-seconds* | Delay sending messages for a number of seconds. |  | Integer
+| *camel.component.aws-sqs.configuration.delete-after-read* | Delete message from SQS after it has been read | true | Boolean
+| *camel.component.aws-sqs.configuration.delete-if-filtered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | Boolean
+| *camel.component.aws-sqs.configuration.extend-message-visibility* | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | Boolean
+| *camel.component.aws-sqs.configuration.kms-data-key-reuse-period-seconds* | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). |  | Integer
+| *camel.component.aws-sqs.configuration.kms-master-key-id* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. |  | String
+| *camel.component.aws-sqs.configuration.maximum-message-size* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. |  | Integer
+| *camel.component.aws-sqs.configuration.message-attribute-names* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
+| *camel.component.aws-sqs.configuration.message-retention-period* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. |  | Integer
+| *camel.component.aws-sqs.configuration.policy* | The policy for this queue |  | String
+| *camel.component.aws-sqs.configuration.proxy-host* | To define a proxy host when instantiating the SQS client |  | String
+| *camel.component.aws-sqs.configuration.proxy-port* | To define a proxy port when instantiating the SQS client |  | Integer
+| *camel.component.aws-sqs.configuration.queue-name* | Name of queue. The queue will be created if they don't already exists. |  | String
+| *camel.component.aws-sqs.configuration.queue-owner-a-w-s-account-id* | Specify the queue owner aws account id when you need to connect the queue with different account owner. |  | String
+| *camel.component.aws-sqs.configuration.queue-url* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. |  | String
+| *camel.component.aws-sqs.configuration.receive-message-wait-time-seconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. |  | Integer
+| *camel.component.aws-sqs.configuration.redrive-policy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. |  | String
+| *camel.component.aws-sqs.configuration.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. |  | String
+| *camel.component.aws-sqs.configuration.secret-key* | Amazon AWS Secret Key |  | String
+| *camel.component.aws-sqs.configuration.server-side-encryption-enabled* | Define if Server Side Encryption is enabled or not on the queue | false | Boolean
+| *camel.component.aws-sqs.configuration.visibility-timeout* | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. |  | Integer
+| *camel.component.aws-sqs.configuration.wait-time-seconds* | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. |  | Integer
+| *camel.component.aws-sqs.enabled* | Enable aws-sqs component | true | Boolean
+| *camel.component.aws-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. |  | String
+| *camel.component.aws-sqs.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-sqs.secret-key* | Amazon AWS Secret Key |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+
+
+
+
+Required SQS component options
+
+You have to provide the amazonSQSClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/sqs[Amazon's SQS].
+
+### Batch Consumer
+
+This component implements the Batch Consumer.
+
+This allows you for instance to know how many messages exists in this
+batch and for instance let the Aggregator
+aggregate this number of messages.
+
+### Usage
+
+#### Message headers set by the SQS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSqsMD5OfBody` |`String` |The MD5 checksum of the Amazon SQS message.
+
+|`CamelAwsSqsMessageId` |`String` |The Amazon SQS message ID.
+
+|`CamelAwsSqsDelaySeconds` |`Integer` |Since *Camel 2.11*, the delay seconds that the Amazon SQS message can be
+see by others.
+|=======================================================================
+
+#### Message headers set by the SQS consumer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelAwsSqsMD5OfBody` |`String` |The MD5 checksum of the Amazon SQS message.
+
+|`CamelAwsSqsMessageId` |`String` |The Amazon SQS message ID. 
+
+|`CamelAwsSqsReceiptHandle` |`String` |The Amazon SQS message receipt handle.
+
+|`CamelAwsSqsMessageAttributes` |`Map<String, String>` |The Amazon SQS message attributes.
+|=======================================================================
+
+#### Advanced AmazonSQS configuration
+
+If your Camel Application is running behind a firewall or if you need to
+have more control over the AmazonSQS instance configuration, you can
+create your own instance:
+
+[source,java]
+--------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+AmazonSQS client = new AmazonSQSClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+--------------------------------------------------------------------------------------
+
+and refer to it in your Camel aws-sqs component configuration:
+
+[source,java]
+---------------------------------------------------------------------------------
+from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
+.to("mock:result");
+---------------------------------------------------------------------------------
+
+#### Creating or updating an SQS Queue
+
+In the SQS Component, when an endpoint is started, a check is executed to obtain information 
+about the existence of the queue or not. You're able to customize the creation through the QueueAttributeName 
+mapping with the SQSConfiguration option.
+
+[source,java]
+---------------------------------------------------------------------------------
+from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
+.to("mock:result");
+---------------------------------------------------------------------------------
+
+In this example if the MyQueue queue is not already created on AWS, it will be created with default parameters from the 
+SQS configuration. If it's already up on AWS, the SQS configuration options will be used to override the existent AWS configuration.
+
+#### DelayQueue VS Delay for Single message
+
+From 2.23.0 the component has a new option: delayQueue. When the option is set to true, the SQS Queue will be a DelayQueue with the 
+DelaySeconds option as delay. For more information about DelayQueue you can read the https://docs.aws.amazon.com/en_us/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html[AWS SQS documentation].
+One important information to take into account is the following:
+
+- For standard queues, the per-queue delay setting is not retroactive—changing the setting doesn't affect the delay of messages already in the queue.
+- For FIFO queues, the per-queue delay setting is retroactive—changing the setting affects the delay of messages already in the queue.
+
+as stated in the official documentation. If you want to specify a delay on single messages, you can ignore the delayQueue option, while you can set this option 
+to true, if you need to add a fixed delay to all messages enqueued.
+
+#### Server Side Encryption
+
+From 2.24.0 we introduce the Server Side Encryption attributes for a queue. The related option are serverSideEncryptionEnabled, keyMasterKeyId and kmsDataKeyReusePeriod.
+The SSE is disabled by default. You need to explicitly set the option to true and set the related parameters as queue attributes.
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.6 or higher).
+
+### JMS-style Selectors
+
+SQS does not allow selectors, but you can effectively achieve this by
+using the Camel Filter EIP and setting an
+appropriate `visibilityTimeout`. When SQS dispatches a message, it will
+wait up to the visibility timeout before it will try to dispatch the
+message to a different consumer unless a DeleteMessage is received. By
+default, Camel will always send the DeleteMessage at the end of the
+route, unless the route ended in failure. To achieve appropriate
+filtering and not send the DeleteMessage even on successful completion
+of the route, use a Filter:
+
+[source,java]
+------------------------------------------------------------------------------------------------------
+from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
+.filter("${header.login} == true")
+.to("mock:result");
+------------------------------------------------------------------------------------------------------
+
+In the above code, if an exchange doesn't have an appropriate header, it
+will not make it through the filter AND also not be deleted from the SQS
+queue. After 5000 miliseconds, the message will become visible to other
+consumers.
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+* AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-swf-component.adoc b/docs/components/modules/ROOT/pages/aws-swf-component.adoc
deleted file mode 120000
index 84017b4..0000000
--- a/docs/components/modules/ROOT/pages/aws-swf-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws-swf-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-swf-component.adoc b/docs/components/modules/ROOT/pages/aws-swf-component.adoc
new file mode 100644
index 0000000..9dc8b68
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-swf-component.adoc
@@ -0,0 +1,297 @@
+[[aws-swf-component]]
+= AWS Simple Workflow Component
+
+*Available as of Camel version 2.13*
+
+The Simple Workflow component supports managing workflows from
+http://aws.amazon.com/swf/[Amazon's Simple Workflow] service.
+
+Prerequisites
+
+You must have a valid Amazon Web Services developer account, and be
+signed up to use Amazon Simple Workflow. More information are available
+at http://aws.amazon.com/swf/[Amazon Simple Workflow].
+
+### URI Format
+
+[source,java]
+---------------------------------------
+aws-swf://<workflow|activity>[?options]
+---------------------------------------
+
+You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+### URI Options
+
+
+// component options: START
+The AWS Simple Workflow component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *configuration* (advanced) | The AWS SWF default configuration |  | SWFConfiguration
+| *accessKey* (common) | Amazon AWS Access Key. |  | String
+| *secretKey* (common) | Amazon AWS Secret Key. |  | String
+| *region* (common) | Amazon AWS Region. |  | String
+| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The AWS Simple Workflow endpoint is configured using URI syntax:
+
+----
+aws-swf:type
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *type* | *Required* Activity or workflow |  | String
+|===
+
+
+==== Query Parameters (30 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *amazonSWClient* (common) | To use the given AmazonSimpleWorkflowClient as client |  | AmazonSimpleWorkflow Client
+| *dataConverter* (common) | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. |  | DataConverter
+| *domainName* (common) | The workflow domain to use. |  | String
+| *eventName* (common) | The workflow or activity event name to use. |  | String
+| *region* (common) | Amazon AWS Region. |  | String
+| *version* (common) | The workflow or activity event version to use. |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *clientConfiguration Parameters* (advanced) | To configure the ClientConfiguration using the key/values from the Map. |  | Map
+| *startWorkflowOptions Parameters* (advanced) | To configure the StartWorkflowOptions using the key/values from the Map. |  | Map
+| *sWClientParameters* (advanced) | To configure the AmazonSimpleWorkflowClient using the key/values from the Map. |  | Map
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *activityList* (activity) | The list name to consume activities from. |  | String
+| *activitySchedulingOptions* (activity) | Activity scheduling options |  | ActivityScheduling Options
+| *activityThreadPoolSize* (activity) | Maximum number of threads in work pool for activity. | 100 | int
+| *activityTypeExecution Options* (activity) | Activity execution options |  | ActivityTypeExecution Options
+| *activityTypeRegistration Options* (activity) | Activity registration options |  | ActivityType RegistrationOptions
+| *childPolicy* (workflow) | The policy to use on child workflows when terminating a workflow. |  | String
+| *executionStartToClose Timeout* (workflow) | Set the execution start to close timeout. | 3600 | String
+| *operation* (workflow) | Workflow operation | START | String
+| *signalName* (workflow) | The name of the signal to send to the workflow. |  | String
+| *stateResultType* (workflow) | The type of the result when a workflow state is queried. |  | String
+| *taskStartToCloseTimeout* (workflow) | Set the task start to close timeout. | 600 | String
+| *terminationDetails* (workflow) | Details for terminating a workflow. |  | String
+| *terminationReason* (workflow) | The reason for terminating a workflow. |  | String
+| *workflowList* (workflow) | The list name to consume workflows from. |  | String
+| *workflowTypeRegistration Options* (workflow) | Workflow registration options |  | WorkflowType RegistrationOptions
+| *accessKey* (security) | Amazon AWS Access Key. |  | String
+| *secretKey* (security) | Amazon AWS Secret Key. |  | String
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.aws-swf.access-key* | Amazon AWS Access Key. |  | String
+| *camel.component.aws-swf.configuration.access-key* | Amazon AWS Access Key. |  | String
+| *camel.component.aws-swf.configuration.activity-list* | The list name to consume activities from. |  | String
+| *camel.component.aws-swf.configuration.activity-scheduling-options* | Activity scheduling options |  | ActivityScheduling Options
+| *camel.component.aws-swf.configuration.activity-thread-pool-size* | Maximum number of threads in work pool for activity. | 100 | Integer
+| *camel.component.aws-swf.configuration.activity-type-execution-options* | Activity execution options |  | ActivityTypeExecution Options
+| *camel.component.aws-swf.configuration.activity-type-registration-options* | Activity registration options |  | ActivityType RegistrationOptions
+| *camel.component.aws-swf.configuration.amazon-s-w-client* | To use the given AmazonSimpleWorkflowClient as client |  | AmazonSimpleWorkflow Client
+| *camel.component.aws-swf.configuration.child-policy* | The policy to use on child workflows when terminating a workflow. |  | String
+| *camel.component.aws-swf.configuration.client-configuration-parameters* | To configure the ClientConfiguration using the key/values from the Map. |  | Map
+| *camel.component.aws-swf.configuration.data-converter* | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. |  | DataConverter
+| *camel.component.aws-swf.configuration.domain-name* | The workflow domain to use. |  | String
+| *camel.component.aws-swf.configuration.event-name* | The workflow or activity event name to use. |  | String
+| *camel.component.aws-swf.configuration.execution-start-to-close-timeout* | Set the execution start to close timeout. | 3600 | String
+| *camel.component.aws-swf.configuration.operation* | Workflow operation | START | String
+| *camel.component.aws-swf.configuration.region* | Amazon AWS Region. |  | String
+| *camel.component.aws-swf.configuration.s-w-client-parameters* | To configure the AmazonSimpleWorkflowClient using the key/values from the Map. |  | Map
+| *camel.component.aws-swf.configuration.secret-key* | Amazon AWS Secret Key. |  | String
+| *camel.component.aws-swf.configuration.signal-name* | The name of the signal to send to the workflow. |  | String
+| *camel.component.aws-swf.configuration.start-workflow-options-parameters* | To configure the StartWorkflowOptions using the key/values from the Map. |  | Map
+| *camel.component.aws-swf.configuration.state-result-type* | The type of the result when a workflow state is queried. |  | String
+| *camel.component.aws-swf.configuration.task-start-to-close-timeout* | Set the task start to close timeout. | 600 | String
+| *camel.component.aws-swf.configuration.termination-details* | Details for terminating a workflow. |  | String
+| *camel.component.aws-swf.configuration.termination-reason* | The reason for terminating a workflow. |  | String
+| *camel.component.aws-swf.configuration.type* | Activity or workflow |  | String
+| *camel.component.aws-swf.configuration.version* | The workflow or activity event version to use. |  | String
+| *camel.component.aws-swf.configuration.workflow-list* | The list name to consume workflows from. |  | String
+| *camel.component.aws-swf.configuration.workflow-type-registration-options* | Workflow registration options |  | WorkflowType RegistrationOptions
+| *camel.component.aws-swf.enabled* | Enable aws-swf component | true | Boolean
+| *camel.component.aws-swf.region* | Amazon AWS Region. |  | String
+| *camel.component.aws-swf.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+| *camel.component.aws-swf.secret-key* | Amazon AWS Secret Key. |  | String
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required SWF component options
+
+You have to provide the amazonSWClient in the
+Registry or your accessKey and secretKey to access
+the http://aws.amazon.com/swf[Amazon's Simple Workflow Service].
+
+### Usage
+
+#### Message headers evaluated by the SWF Workflow Producer
+
+A workflow producer allows interacting with a workflow. It can start a
+new workflow execution, query its state, send signals to a running
+workflow, or terminate and cancel it.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelSWFOperation` |`String` |The operation to perform on the workflow. Supported operations are:  +
+ SIGNAL, CANCEL, TERMINATE, GET_STATE, START, DESCRIBE, GET_HISTORY.
+
+|`CamelSWFWorkflowId` |`String` |A workflow ID to use.
+
+|`CamelAwsDdbKeyCamelSWFRunId` |`String` |A worfklow run ID to use.
+
+|`CamelSWFStateResultType` |`String` |The type of the result when a workflow state is queried.
+
+|`CamelSWFEventName` |`String` |The workflow or activity event name to use.
+
+|`CamelSWFVersion` |`String` |The workflow or activity event version to use.
+
+|`CamelSWFReason` |`String` |The reason for terminating a workflow.
+
+|`CamelSWFDetails` |`String` |Details for terminating a workflow.
+
+|`CamelSWFChildPolicy` |`String` |The policy to use on child workflows when terminating a workflow.
+|=======================================================================
+
+#### Message headers set by the SWF Workflow Producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelSWFWorkflowId` |`String` |The worfklow ID used or newly generated.
+
+|`CamelAwsDdbKeyCamelSWFRunId` |`String` |The worfklow run ID used or generated.
+|=======================================================================
+
+#### Message headers set by the SWF Workflow Consumer
+
+A workflow consumer represents the workflow logic. When it is started,
+it will start polling workflow decision tasks and process them. In
+addition to processing decision tasks, a workflow consumer route, will
+also receive signals (send from a workflow producer) or state queries.
+The primary purpose of a workflow consumer is to schedule activity tasks
+for execution using activity producers. Actually activity tasks can be
+scheduled only from a thread started by a workflow consumer.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelSWFAction` |`String` |Indicates what type is the current event: CamelSWFActionExecute,
+CamelSWFSignalReceivedAction or CamelSWFGetStateAction.
+
+|`CamelSWFWorkflowReplaying` |`boolean` |Indicates whether the current decision task is a replay or not.
+
+|`CamelSWFWorkflowStartTime` |`long` |The time of the start event for this decision task.
+|=======================================================================
+
+#### Message headers set by the SWF Activity Producer
+
+An activity producer allows scheduling activity tasks. An activity
+producer can be used only from a thread started by a workflow consumer
+ie, it can process synchronous exchanges started by a workflow consumer.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelSWFEventName` |`String` |The activity name to schedule.
+
+|`CamelSWFVersion` |`String` |The activity version to schedule.
+|=======================================================================
+
+#### Message headers set by the SWF Activity Consumer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelSWFTaskToken` |`String` |The task token that is required to report task completion for manually
+completed tasks.
+|=======================================================================
+
+#### Advanced amazonSWClient configuration
+
+If you need more control over the AmazonSimpleWorkflowClient instance
+configuration you can create your own instance and refer to it from the
+URI:
+
+The `#client` refers to a AmazonSimpleWorkflowClient in the
+Registry.
+
+For example if your Camel Application is running behind a firewall:
+
+[source,java]
+--------------------------------------------------------------------------------------------------------
+AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
+ClientConfiguration clientConfiguration = new ClientConfiguration();
+clientConfiguration.setProxyHost("http://myProxyHost");
+clientConfiguration.setProxyPort(8080);
+
+AmazonSimpleWorkflowClient client = new AmazonSimpleWorkflowClient(awsCredentials, clientConfiguration);
+
+registry.bind("client", client);
+--------------------------------------------------------------------------------------------------------
+
+### Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel
+(2.13 or higher).
+
+### See Also
+
+* Configuring Camel
+* Component
+* Endpoint
+* Getting Started
+
+AWS Component
diff --git a/docs/components/modules/ROOT/pages/aws-xray.adoc b/docs/components/modules/ROOT/pages/aws-xray.adoc
deleted file mode 120000
index bd03b37..0000000
--- a/docs/components/modules/ROOT/pages/aws-xray.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws-xray/src/main/docs/aws-xray.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws-xray.adoc b/docs/components/modules/ROOT/pages/aws-xray.adoc
new file mode 100644
index 0000000..cda67cb
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws-xray.adoc
@@ -0,0 +1,115 @@
+[[AWSXRay-AWSXRayComponent]]
+= AWS XRay Component
+
+*Available as of Camel 2.21*
+
+The camel-aws-xray component is used for tracing and timing incoming and outgoing Camel messages using https://aws.amazon.com/xray/[AWS XRay].
+
+Events (subsegments) are captured for incoming and outgoing messages being sent to/from Camel.
+
+== Dependency
+
+In order to include AWS XRay support into Camel, the archive containing the Camel related AWS XRay related classes need to be added to the project. In addition to that, AWS XRay libraries also need to be available.
+
+To include both, AWS XRay and Camel, dependencies use the following Maven imports:
+
+[source,xml]
+---------------------------------------------------------------------------------------------------------
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>com.amazonaws</groupId>
+        <artifactId>aws-xray-recorder-sdk-bom</artifactId>
+        <version>1.3.1</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-aws-xray</artifactId>
+      </dependency>
+
+      <dependency>
+        <groupId>com.amazonaws</groupId>
+        <artifactId>aws-xray-recorder-sdk-core</artifactId>
+      </dependency>
+      <dependency>
+        <groupId>com.amazonaws</groupId>
+        <artifactId>aws-xray-recorder-sdk-aws-sdk</artifactId>
+      </dependency>
+  <dependencies>
+---------------------------------------------------------------------------------------------------------
+
+== Configuration
+
+The configuration properties for the AWS XRay tracer are:
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Option |Default |Description
+
+|addExcludePatterns | &nbsp; | Sets exclude pattern(s) that will disable tracing for Camel
+messages that matches the pattern. The content is a Set<String> where the key is a pattern matching routeId's. The pattern
+uses the rules from Intercept.
+|setTracingStrategy | NoopTracingStrategy | Allows a custom Camel `InterceptStrategy` to be provided in order to track invoked processor definitions like `BeanDefinition` or `ProcessDefinition`. `TraceAnnotatedTracingStrategy` will track any classes invoked via `.bean(...)` or `.process(...)` that contain a `@XRayTrace` annotation at class level.
+
+|=======================================================================
+
+There is currently only one way an AWS XRay tracer can be configured to provide distributed tracing for a Camel application:
+
+=== Explicit
+
+Include the `camel-aws-xray` component in your POM, along with any specific dependencies associated with the AWS XRay Tracer.
+
+To explicitly configure AWS XRay support, instantiate the `XRayTracer` and initialize the camel
+context. You can optionally specify a `Tracer`, or alternatively it can be implicitly discovered using the
+`Registry` or `ServiceLoader`.
+
+[source,java]
+--------------------------------------------------------------------------------------------------
+XRayTracer xrayTracer = new XRayTracer();
+// By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation.
+xrayTracer.setTracingStrategy(...);
+// And then initialize the context
+xrayTracer.init(camelContext);
+--------------------------------------------------------------------------------------------------
+
+To use XRayTracer in XML, all you need to do is to define the
+AWS XRay tracer bean. Camel will automatically discover and use it.
+
+[source,xml]
+---------------------------------------------------------------------------------------------------------
+  <bean id="tracingStrategy" class="..."/>
+  <bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
+    <property name="tracer" ref="tracingStrategy"/>
+  </bean>
+---------------------------------------------------------------------------------------------------------
+
+In case of the default `NoopTracingStrategy` only the creation and deletion of exchanges is tracked but not the invocation of certain beans or EIP patterns.
+
+=== Tracking of comprehensive route execution
+
+In order to track the execution of an exchange among multiple routes, on exchange creation a unique trace ID is generated and stored in the headers if no corresponding value was yet available. This trace ID is copied over to new exchanges in order to keep a consistent view of the processed exchange.
+
+As AWS XRay traces work on a thread-local basis the current sub/segment should be copied over to the new thread and set as explained in https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-java-multithreading.html[in the AWS XRay documentation]. The Camel AWS XRay component therefore provides an additional header field that the component will use in order to set the passed AWS XRay `Entity` to the new thread and thus keep the tracked data to the route rather than exposing a new segm [...]
+
+The component will use the following constants found in the headers of the exchange:
+
+[width="100%",cols="30%,70%",options="header",]
+|=======================================================================
+|Header |Description
+
+| Camel-AWS-XRay-Trace-ID | Contains a reference to the AWS XRay `TraceID` object to provide a comprehensive view of the invoked routes
+| Camel-AWS-XRay-Trace-Entity | Contains a reference to the actual AWS XRay `Segment` or `Subsegment` which is copied over to the new thread. This header should be set in case a new thread is spawned and the performed tasks should be exposed as part of the executed route instead of creating a new unrelated segment.
+
+|=======================================================================
+
+Note that the AWS XRay `Entity` (i.e., `Segment` and `Subsegment`) are not serializable and therefore should not get passed to other JVM processes.
+
+== Example
+
+You can find an example demonstrating the way to configure AWS XRay tracing within the tests accompanying this project.
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws.adoc b/docs/components/modules/ROOT/pages/aws.adoc
deleted file mode 120000
index cea5502..0000000
--- a/docs/components/modules/ROOT/pages/aws.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-aws/src/main/docs/aws.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/aws.adoc b/docs/components/modules/ROOT/pages/aws.adoc
new file mode 100644
index 0000000..3add004
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws.adoc
@@ -0,0 +1,5 @@
+= Camel Components for Amazon Web Services
+
+The Camel Components for http://aws.amazon.com[Amazon Web Services]
+provide connectivity to AWS services from Camel.
+ 
diff --git a/docs/components/modules/ROOT/pages/azure-blob-component.adoc b/docs/components/modules/ROOT/pages/azure-blob-component.adoc
deleted file mode 120000
index 449623e..0000000
--- a/docs/components/modules/ROOT/pages/azure-blob-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-azure/src/main/docs/azure-blob-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/azure-blob-component.adoc b/docs/components/modules/ROOT/pages/azure-blob-component.adoc
new file mode 100644
index 0000000..1c35e8a
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/azure-blob-component.adoc
@@ -0,0 +1,231 @@
+= Azure Storage Blob Service Component
+
+*Available as of Camel version 2.19*
+
+
+The Azure Blob component supports storing and retrieving the blobs to/from
+https://azure.microsoft.com/services/storage/blobs/[Azure Storage Blob] service.
+
+Prerequisites
+
+You must have a valid Windows Azure Storage account. More information is available at
+https://docs.microsoft.com/azure/[Azure Documentation Portal].
+
+== URI Format
+
+[source,java]
+------------------------------
+azure-blob://accountName/containerName[/blobName][?options]
+------------------------------
+
+In most cases a blobName is required and the blob will be created if it does not already exist. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+For example in order to download a blob content from the public block blob `blockBlob` 
+located on the `container1` in the `camelazure` storage account, use the following snippet:
+
+[source,java]
+--------------------------------------------------------------------------------
+from("azure-blob:/camelazure/container1/blockBlob").
+to("file://blobdirectory");
+--------------------------------------------------------------------------------
+
+== URI Options
+
+
+// component options: START
+The Azure Storage Blob Service component has no options.
+// component options: END
+
+
+
+
+
+
+
+
+
+
+
+// endpoint options: START
+The Azure Storage Blob Service endpoint is configured using URI syntax:
+
+----
+azure-blob:containerOrBlobUri
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *containerOrBlobUri* | *Required* Container or Blob compact Uri |  | String
+|===
+
+
+==== Query Parameters (19 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *azureBlobClient* (common) | The blob service client |  | CloudBlob
+| *blobOffset* (common) | Set the blob offset for the upload or download operations, default is 0 | 0 | Long
+| *blobType* (common) | Set a blob type, 'blockblob' is default | blockblob | BlobType
+| *closeStreamAfterRead* (common) | Close the stream after read or keep it open, default is true | true | boolean
+| *credentials* (common) | Set the storage credentials, required in most cases |  | StorageCredentials
+| *dataLength* (common) | Set the data length for the download or page blob upload operations |  | Long
+| *fileDir* (common) | Set the file directory where the downloaded blobs will be saved to |  | String
+| *publicForRead* (common) | Storage resources can be public for reading their content, if this property is enabled then the credentials do not have to be set | false | boolean
+| *streamReadSize* (common) | Set the minimum read size in bytes when reading the blob content |  | int
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *blobMetadata* (producer) | Set the blob meta-data |  | Map
+| *blobPrefix* (producer) | Set a prefix which can be used for listing the blobs |  | String
+| *closeStreamAfterWrite* (producer) | Close the stream after write or keep it open, default is true | true | boolean
+| *operation* (producer) | Blob service operation hint to the producer | listBlobs | BlobServiceOperations
+| *streamWriteSize* (producer) | Set the size of the buffer for writing block and page blocks |  | int
+| *useFlatListing* (producer) | Specify if the flat or hierarchical blob listing should be used | true | boolean
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.azure-blob.enabled* | Enable azure-blob component | true | Boolean
+| *camel.component.azure-blob.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required Azure Storage Blob Service component options
+
+You have to provide the containerOrBlob name and the credentials if the private blob needs to be accessed.
+
+== Usage
+
+=== Message headers set by the Azure Storage Blob Service producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+|`CamelFileName` |`String` |The file name for the downloaded blob content.
+|=======================================================================
+
+=== Message headers set by the Azure Storage Blob Service producer consumer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+|`CamelFileName` |`String` |The file name for the downloaded blob content.
+|=======================================================================
+
+
+=== Azure Blob Service operations
+
+*Operations common to all block types*
+
+[width="100%",cols="20%,80%",options="header",]
+|===
+|Operation |Description
+
+|`getBlob`  |Get the content of the blob. You can restrict the output of this operation to a blob range.
+|`deleteBlob`  |Delete the blob.
+|`listBlobs`  |List the blobs.
+
+|===
+
+*Block blob operations*
+
+[width="100%",cols="20%,80%",options="header",]
+|===
+|Operation |Description
+
+|`updateBlockBlob`  |Put block blob content that either creates a new block blob or overwrites the existing block blob content.
+|`uploadBlobBlocks`  |Upload block blob content, by first generating a sequence of blob blocks and then committing them to a blob. If you enable the message *CommitBlockListLater* property, you can execute the commit later with the `commitBlobBlockList` operation. You can later update individual block blobs.
+|`commitBlobBlockList`  |Commit a sequence of blob blocks to the block list that you previously uploaded to the blob service (by using the `updateBlockBlob` operation with the message *CommitBlockListLater* property enabled).
+|`getBlobBlockList`  |Get the block blob list.
+
+|===
+
+*Append blob operations*
+
+[width="100%",cols="20%,80%",options="header",]
+|===
+|Operation |Description
+
+|`createAppendBlob`  |Create an append block. By default, if the block already exists then it is not reset. Note that you can alternately create an append blob by enabling the message *AppendBlobCreated* property and using the `updateAppendBlob` operation. 
+
+|`updateAppendBlob`  |Append the new content to the blob. This operation also creates the blob if it does not already exist and if you enabled a message *AppendBlobCreated* property.
+
+|===
+
+
+*Page Block operations*
+
+[width="100%",cols="20%,80%",options="header",]
+|===
+|Operation |Description
+
+|`createPageBlob`  |Create a page block. By default, if the block already exists then it is not reset. Note that you can also create a page blob (and set its contents) by enabling a message *PageBlobCreated* property and by using the `updatePageBlob` operation.
+|`updatePageBlob`  |Create a page block (unless you enable a message *PageBlobCreated* property and the identically named block already exists) and set the content of this blob.
+|`resizePageBlob`  |Resize the page blob.
+|`clearPageBlob`  |Clear the page blob.
+|`getPageBlobRanges`  |Get the page blob page ranges.
+
+|===
+
+
+
+=== Azure Blob Client configuration
+
+If your Camel Application is running behind a firewall or if you need to
+have more control over the Azure Blob Client configuration, you can
+create your own instance:
+
+[source,java]
+--------------------------------------------------------------------------------------
+StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", Base64.encode("thekey".getBytes()));
+CloudBlob client = new CloudBlockBlob("camelazure", credentials);
+registry.bind("azureBlobClient", client);
+--------------------------------------------------------------------------------------
+
+and refer to it in your Camel azure-blob component configuration:
+
+[source,java]
+--------------------------------------------------------------------------------
+from("azure-blob://camelazure/container1/blockBlob?azureBlobClient=#client")
+.to("mock:result");
+--------------------------------------------------------------------------------
+
+== Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-azure</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel.
diff --git a/docs/components/modules/ROOT/pages/azure-queue-component.adoc b/docs/components/modules/ROOT/pages/azure-queue-component.adoc
deleted file mode 120000
index 27753c4..0000000
--- a/docs/components/modules/ROOT/pages/azure-queue-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-azure/src/main/docs/azure-queue-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/azure-queue-component.adoc b/docs/components/modules/ROOT/pages/azure-queue-component.adoc
new file mode 100644
index 0000000..d5e61c7
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/azure-queue-component.adoc
@@ -0,0 +1,170 @@
+= Azure Storage Queue Service Component
+
+*Available as of Camel version 2.19*
+
+
+The Azure Queue component supports storing and retrieving the messages to/from
+https://azure.microsoft.com/services/storage/queues/[Azure Storage Queue] service.
+
+Prerequisites
+
+You must have a valid Microsoft Azure account. More information is available at
+https://azure.microsoft.com/en-us/free/[Azure Portal].
+
+== URI Format
+
+[source,java]
+------------------------------
+azure-queue://accountName/queueName[?options]
+------------------------------
+
+The queue will be created if it does not already exist. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+For example in order to get a message content from the queue `messageQueue` 
+in the `camelazure` storage account and, use the following snippet:
+
+[source,java]
+--------------------------------------------------------------------------------
+from("azure-queue:/camelazure/messageQueue").
+to("file://queuedirectory");
+--------------------------------------------------------------------------------
+
+== URI Options
+
+
+// component options: START
+The Azure Storage Queue Service component has no options.
+// component options: END
+
+
+
+
+
+
+
+
+
+
+
+// endpoint options: START
+The Azure Storage Queue Service endpoint is configured using URI syntax:
+
+----
+azure-queue:containerAndQueueUri
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *containerAndQueueUri* | *Required* Container Queue compact Uri |  | String
+|===
+
+
+==== Query Parameters (10 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *azureQueueClient* (common) | The queue service client |  | CloudQueue
+| *credentials* (common) | Set the storage credentials, required in most cases |  | StorageCredentials
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *messageTimeToLive* (producer) | Message Time To Live in seconds |  | int
+| *messageVisibilityDelay* (producer) | Message Visibility Delay in seconds |  | int
+| *operation* (producer) | Queue service operation hint to the producer | listQueues | QueueServiceOperations
+| *queuePrefix* (producer) | Set a prefix which can be used for listing the queues |  | String
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.azure-queue.enabled* | Enable azure-queue component | true | Boolean
+| *camel.component.azure-queue.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+
+
+Required Azure Storage Queue Service component options
+
+You have to provide the containerAndQueue URI  and the credentials.
+
+== Usage
+
+=== Azure Queue Service operations
+
+[width="100%",cols="20%,80%",options="header",]
+|===
+|Operation |Description
+
+|`listQueues`  |List the queues.
+|`createQueue`  |Create the queue.
+|`deleteQueue`  |Delete the queue.
+|`addMessage`  |Add a message to the queue.
+|`retrieveMessage`  |Retrieve a message from the queue.
+|`peekMessage`  |View the message inside the queue, for example, to determine whether the message arrived at the correct queue.
+|`updateMessage`  |Update the message in the queue.
+|`deleteMessage`  |Delete the message in the queue.
+
+|===
+
+
+
+=== Azure Queue Client configuration
+
+If your Camel Application is running behind a firewall or if you need to
+have more control over the Azure Queue Client configuration, you can
+create your own instance:
+
+[source,java]
+--------------------------------------------------------------------------------------
+StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");
+
+CloudQueue client = new CloudQueue("camelazure", credentials);
+
+registry.bind("azureQueueClient", client);
+--------------------------------------------------------------------------------------
+
+and refer to it in your Camel azure-queue component configuration:
+
+[source,java]
+--------------------------------------------------------------------------------
+from("azure-queue:/camelazure/messageQueue?azureQueueClient=#client")
+.to("mock:result");
+--------------------------------------------------------------------------------
+
+== Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-azure</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `${camel-version`} must be replaced by the actual version of Camel.
diff --git a/docs/components/modules/ROOT/pages/azure.adoc b/docs/components/modules/ROOT/pages/azure.adoc
deleted file mode 120000
index 3a732ed..0000000
--- a/docs/components/modules/ROOT/pages/azure.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-azure/src/main/docs/azure.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/azure.adoc b/docs/components/modules/ROOT/pages/azure.adoc
new file mode 100644
index 0000000..1bb0742
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/azure.adoc
@@ -0,0 +1,14 @@
+[[Azure-CamelComponentsforWindowsAzureServices]]
+= Camel Components for Windows Azure Services
+
+The Camel Components for https://azure.microsoft.com/[Windows Azure Services]
+provide connectivity to Azure services from Camel.
+
+ 
+[width="100%",cols="30%,10%,50%",options="header",]
+|=======================================================================
+|Azure Service |Camel Component |Component Description
+
+|https://azure.microsoft.com/services/storage/blobs[Storage Blob Service] |xref:azure-blob-component.adoc[Azure-Blob] |Supports storing and retrieving of blobs
+|https://azure.microsoft.com/services/storage/queues[Storage Queue Service] |xref:azure-queue-component.adoc[Azure-Queue] |Supports storing and retrieving of messages in the queues
+|=======================================================================
diff --git a/docs/components/modules/ROOT/pages/bam-example.adoc b/docs/components/modules/ROOT/pages/bam-example.adoc
deleted file mode 120000
index 40e2da5..0000000
--- a/docs/components/modules/ROOT/pages/bam-example.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-bam/src/main/docs/bam-example.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/bam-example.adoc b/docs/components/modules/ROOT/pages/bam-example.adoc
new file mode 100644
index 0000000..638b785
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/bam-example.adoc
@@ -0,0 +1,89 @@
+= Business Activity Monitor (BAM) Example
+
+The BAM (Business Activity Monitor) example shows how to
+monitor your transaction flows using Camel.
+
+In this example we will use Camel to monitor a business process
+consisting of
+
+* purchase orders
+* invoices
+
+Then we will check to see that for every purchase order created by
+system A, that system B will generate an invoice within the specified
+amount of time (2 seconds in this example). If an invoice is not
+generated within the allowed amount of time and error is generated and
+sent to an Endpoint.
+
+== Overview
+
+This example lives in the _examples/camel-example-bam_ directory. It
+will poll the following directories
+
+* the child _src/data/purchaseOrders_ directory for XML purchase orders
+* the child _src/data/invoices_ directory for XML invoices
+
+The
+http://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-bam/src/main/java/org/apache/camel/example/bam/MyActivities.java[MyActivities]
+class defines the BAM activities; that is
+
+* the input sources (the two directories above) which could be any of
+the supported camel URIs
+* how the activities relate to each other - namely the
+Correlation Identifier pattern
+* the maixmum amount of time allowed from the time a purchase order is
+received when if an invoice is not received an error should be raised.
+
+There is also a spring configuration file in
+http://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-bam/src/main/resources/META-INF/spring/camel-context.xml[src/resources/META-INF/services/camel-context.xml]
+which defines the JPA `EntityManagerFactory` and tells Camel to look in
+the *org.apache.camel.example.bam* package to find its routes.
+
+== Using BAM
+
+So lets start with the activities definition in
+http://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-bam/src/main/java/org/apache/camel/example/bam/MyActivities.java[MyActivities]
+
+The first two lines of code sets up the inputs for the
+BAM activities via the *activity()* method which defines
+
+* the URIs of the inputs (which could come from any of
+the Camel Components
+* the Correlation Identifier used to
+correlate together the purchase order and invoice messages which can be
+any Expression via any of the
+Languages Supported. In this case we are
+using <<xpath-language,XPath>>.
+
+Then the final line of code defines the temporal rules to use; namely
+that it is considered to be an error if an invoice is not received
+within 2 seconds of a purchase order being received. When a failure
+occurs in this example we just send it to the <<log-component,Log>>
+component to log out an error level message to commons-logging / log4j.
+You could change this to use some of the other
+Components such as ActiveMQ,
+<<jms-component,JMS>>, <<jms-component,IRC>>, <<jms-component,Mail>>,
+<<xmpp-component,XMPP>> etc.
+
+== Running the example
+
+To run the example we use the link:camel-maven-plugin.html[Camel Maven
+Plugin]. For example from the source or binary distribution the
+following should work
+
+[source,java]
+-----------------------------
+cd examples/camel-example-bam
+mvn camel:run
+-----------------------------
+
+If you prefer you can just run the Main directly using
+
+[source,java]
+---------------------
+mvn compile exec:java
+---------------------
+
+Failing that you can run the Main from inside your IDE if you prefer.
+Follow the Building instructions to create an
+Eclipse/IDEA project to import
diff --git a/docs/components/modules/ROOT/pages/bam.adoc b/docs/components/modules/ROOT/pages/bam.adoc
deleted file mode 120000
index 1d06e2d..0000000
--- a/docs/components/modules/ROOT/pages/bam.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-bam/src/main/docs/bam.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/bam.adoc b/docs/components/modules/ROOT/pages/bam.adoc
new file mode 100644
index 0000000..7253ea0
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/bam.adoc
@@ -0,0 +1,84 @@
+[[BAM-BusinessActivityMonitoring]]
+= Business Activity Monitoring
+
+The *Camel BAM* module provides a Business Activity Monitoring (BAM)
+framework for testing business processes across multiple message
+exchanges on different Endpoint instances.
+
+Consider, for example, a simple system in which you submit Purchase
+Orders into system A and then receive Invoices from system B. You might
+want to test that, for a given Purchase Order, you receive a matching
+Invoice from system B within a specific time period.
+
+[[BAM-HowCamelBAMWorks]]
+How Camel BAM Works
+^^^^^^^^^^^^^^^^^^^
+
+Camel BAM uses a link:correlation-identifier.html[Correlation
+Identifier] on an input message to determine the _Process Instance_ to
+which it belongs. The process instance is an entity bean which can
+maintain state for each _Activity_ (where an activity typically maps to
+a single endpoint - such as the submission of Purchase Orders or the
+receipt of Invoices).
+
+You can then add rules to be triggered when a message is received on any
+activity - such as to set time expectations or perform real time
+reconciliation of values across activities.
+
+[[BAM-SimpleExample]]
+Simple Example
+^^^^^^^^^^^^^^
+
+The following example shows how to perform some time based rules on a
+simple business process of 2 activities - A and B - which correspond
+with Purchase Orders and Invoices in the example above. If you would
+like to experiment with this scenario, you may edit this
+http://svn.apache.org/repos/asf/camel/trunk/components/camel-bam/src/test/java/org/apache/camel/bam/BamRouteTest.java[Test
+Case], which defines the activities and rules, and then tests that they
+work.
+
+[source,java]
+-------------------------------------------------
+return new ProcessBuilder(entityManagerFactory, transactionTemplate) {
+    public void configure() throws Exception {
+ 
+        // let's define some activities, correlating on an XPath on the message bodies
+        ActivityBuilder a = activity("seda:a").name("a")
+                .correlate(xpath("/hello/@id"));
+ 
+        ActivityBuilder b = activity("seda:b").name("b")
+                .correlate(xpath("/hello/@id"));
+ 
+        // now let's add some rules
+        b.starts().after(a.completes())
+                .expectWithin(seconds(1))
+                .errorIfOver(seconds(errorTimeout)).to("mock:overdue");
+    }
+};
+-------------------------------------------------
+
+As you can see in the above example, we first define two activities, and
+then rules to specify when we expect them to complete for a process
+instance and when an error condition should be raised.p. The
+ProcessBuilder is a RouteBuilder and can be
+added to any CamelContext.
+
+[[BAM-CompleteExample]]
+Complete Example
+^^^^^^^^^^^^^^^^
+
+For a complete example please see the link:examples/bam-example.html[BAM
+Example], which is part of the standard Camel
+Examples
+
+[[BAM-UseCases]]
+Use Cases
+^^^^^^^^^
+
... 126356 lines suppressed ...